C_连接sql数据库执行简单的增删改查操作
- 格式:doc
- 大小:40.00 KB
- 文档页数:3
C#访问SQLServer增删改查代码实例⼀个专门实现访问sql server数据库增删改查的操作代码,分享给⼤家,具体内容如下using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data;using System.Data.SqlClient;namespace WindowsFormsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}//查询private void button1_Click(object sender, EventArgs e){string MyConn = "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no";//定义数据库连接参数 SqlConnection MyConnection = new SqlConnection(MyConn);//定义⼀个数据连接实例SqlCommand MyCommand = new SqlCommand("SELECT * FROM 图书借阅", MyConnection); //定义⼀个数据库操作指令 SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定义⼀个数据适配器SelectAdapter.SelectCommand = MyCommand;//定义数据适配器的操作指令DataSet MyDataSet = new DataSet();//定义⼀个数据集MyConnection.Open();//打开数据库连接SelectAdapter.SelectCommand.ExecuteNonQuery();//执⾏数据库查询指令MyConnection.Close();//关闭数据库SelectAdapter.Fill(MyDataSet);//填充数据集DataGrid1.DataSource = MyDataSet.Tables[0];//DataGrid1.DataBind();//将数据表格⽤数据集中的数据填充}//添加private void button2_Click(object sender, EventArgs e){string MyConn = "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no";SqlConnection MyConnection = new SqlConnection(MyConn);string MyInsert = "insert into 图书借阅 (图书编号,读者编号,续借次数) values ('" + Convert.ToString(textBox2.Text) + "','" + Convert.ToString(textBox3.Text)+ "','"+Convert.ToInt32(textBox4.Text)+ "')";SqlCommand MyCommand = new SqlCommand(MyInsert, MyConnection);try//异常处理{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();}catch (Exception ex){MessageBox.Show(ex.Message);}}//更新private void button3_Click(object sender, EventArgs e){string MyConn = "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no";SqlConnection MyConnection = new SqlConnection(MyConn);string MyUpdate = "Update 图书借阅 set 操作员='" + textBox2.Text + "'" + " where 借阅编号=" + "'" + textBox1.Text + "'"; SqlCommand MyCommand = new SqlCommand(MyUpdate, MyConnection);try{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();textBox1.Text = "";}catch (Exception ex){MessageBox.Show(ex.Message);}}//删除private void button4_Click(object sender, EventArgs e){string MyConn = "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no"; SqlConnection MyConnection = new SqlConnection(MyConn);string MyDelete = "Delete from 图书借阅 where 借阅编号=" + textBox1.Text;SqlCommand MyCommand = new SqlCommand(MyDelete, MyConnection);try{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();textBox1.Text = "";}catch (Exception ex){MessageBox.Show(ex.Message);}}}}数据库如下;winform中查询成功;插⼊时,因为借阅编号为⾃增,不能插⼊值,会⾃⼰⽣成;更新,外键冲突;插⼊的图书编号为000999,⽆此图书,故出错;插⼊成功;更新操作员为"王⽼师";删除借阅编号为31的记录;以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
c数据库的增删改查项目案例一、项目准备。
1. 得包含SQLite相关的头文件。
SQLite有个方便的C接口,我们这样写:`#include <stdio.h>`:这是标准输入输出头文件,用于在控制台打印信息啥的。
`#include <sqlite3.h>`:这个就是SQLite数据库操作的关键头文件啦。
2. 然后呢,定义一个数据库连接对象。
就像你要跟数据库交朋友,得有个联系方式一样。
`sqlite3 db;`.二、连接数据库(这就像是给数据库打电话)1. 我们使用`sqlite3_open`函数来打开数据库。
如果数据库不存在,SQLite会自动创建一个。
比如我们创建一个名为`test.db`的数据库(这名字就很普通,就像大街上随便一个名字一样)。
代码是这样的:`int rc = sqlite3_open("test.db", &db);`.如果`rc`不等于`SQLITE_OK`(这是SQLite定义的一个常量,表示操作成功),那就说明出问题了,可能是文件权限问题或者磁盘满了之类的(就像打电话占线或者号码不存在一样)。
我们可以这样处理错误:`if (rc!= SQLITE_OK) {`.`fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));`.`sqlite3_close(db);`.`return 1;`.`}`.三、创建表(这就像是给数据库盖房子,先把房子结构规划好)1. 我们要创建一个表,就像在数据库这个大社区里盖一栋楼。
假设我们要创建一个存储用户信息的表,有`id`(就像用户的身份证号,独一无二的)、`name`(用户的名字)和`age`(用户的年龄)这几个字段。
我们用SQL语句来创建这个表,SQL语句就像是给数据库下达的建筑蓝图指令。
visualstudio2019连接SQLServer数据库,增删改查详细教程(C#代码)⼯具:1.Visual Studio 20192.SQL Server数据库(我使⽤的2008)操作:1.打开SQL Server,打开后会看到数据库的初始链接界⾯。
(如下图)2..复制上图中的“服务器名称”,然后点击“连接”,进⼊数据库。
3.打开vs,创建好⾃⼰要⽤的项⽬,我写的项⽬名称叫做:‘finnal_test’,要做的是数据库综合实习关于奖学⾦评定的管理系统4.⼯具->连接到数据库->在服务器名⾥⾯,粘贴复制的服务器名5.在下⾯选择⾃⼰要连接的数据库名称(也可以⼿动输⼊,我连接的是我⾃⼰创建的数据库:shaohui),确定6.打开“服务器资源管理器”,会看到有下图信息,点击“表”可以看到数据库⾥⾯创建的数据表连接代码:完成上述操作后只是把数据库添加到了vs⾥,要想在项⽬⾥对数据库进⾏编辑,还需要写⼀些代码。
1.打开⾃⼰的项⽬,选择项⽬->添加类类名⾃⼰起,我这⾥是SQLServerDataBase2.打开类⽂件,写⼊以下代码。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Threading.Tasks;//必要的命名空间namespace finnal_test{class SQLServerDataBase//MySqlCon部分,每个⼈不相同,后⾯我会进⾏说明,下⾯的是我计算机相应的配置private string MySqlCon = "Data Source=DESKTOP-8LDERGD\\SQLEXPRESS;Initial Catalog = shaohui; Integrated Security = True";public DataTable ExecuteQuery(string sqlStr)//⽤于查询;其实是相当于提供⼀个可以传参的函数,到时候写⼀个sql语句,存在string⾥,传给这个函数,就会⾃动执⾏。
C#操作Sql数据库之对数据库进⾏增删改查测试窗体为:直接上代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;using System.Diagnostics;namespace SqlDatabase{public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 初始化参数,数据库连接字段/// </summary>/// //Windows⾝份验证Sql连接语句为:"Data Source=DESKTOP-KJ6QD3R;Initial Catalog=Test2;Integrated Security=True";///数据库⽤户密码验证:string connectionString="server=.;database=Sql;uid=sa; pwd=123456";public static string StrConnec = "Data Source=DESKTOP-KJ6QD3R;Initial Catalog=Test2;IntegratedSecurity=True";public static string StrConnec1 = "Data Source=DESKTOP-KJ6QD3R;Initial Catalog=Test2;uid=sa;pwd=614823";SqlConnection Sqlcon = new SqlConnection(StrConnec1);DataTable DT = null;/// <summary>/// 测试是否连接数据库成功/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){try{Sqlcon.Open();MessageBox.Show("连接成功");}catch{MessageBox.Show("连接失败");}}/// <summary>/// 查询整表/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_query_Click(object sender, EventArgs e){//Access 语句为: string sql = "select * from UserInfo ",可以很明显的看出两者的区别string sql = "use Test2 SELECT * FROM tb1 ";SqlDataAdapter Sqladpter = new SqlDataAdapter(sql, Sqlcon);DT = new DataTable();Sqladpter.Fill(DT);dataGridView1.DataSource = DT;}/// <summary>/// 查询满⾜条件的内容/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_conditionquery_Click(object sender, EventArgs e){//************************条件查询语句*************************/** 只显⽰固定例:"use Test2 SELECT name ,sex FROM tb1" ;* 保留country唯⼀值: SELECT DISTINCT country FROM Websites;* 精确=查询:"use Test2 SELECT * FROM tb1 where name = 'liu'";* 两个都成⽴条件查询:SELECT * FROM Websites WHERE country='CN'AND alexa > 50;* 两个成⽴⼀个条件查询:SELECT * FROM Websites WHERE country='CN'or alexa > 50;* 查询并根据⼀个列值排序:SELECT * FROM Websites ORDER BY alexa; order by A ,B desc/asc(根据列名降序/升序排列)* */string sql = "use Test2 SELECT * FROM tb1 where name = 'liu'";SqlDataAdapter Sqladpter = new SqlDataAdapter(sql, Sqlcon);DT = new DataTable();Sqladpter.Fill(DT);dataGridView1.DataSource = DT;}/// <summary>/// 只查询固定字段/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){string sql = "use Test2 SELECT name ,sex FROM tb1";SqlDataAdapter Sqladpter = new SqlDataAdapter(sql, Sqlcon);DT = new DataTable();Sqladpter.Fill(DT);dataGridView1.DataSource = DT;}Stopwatch WatchDog = new Stopwatch();/// <summary>/// 单条插⼊/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_insert_Click(object sender, EventArgs e){//Use Test2 insert into tb1 (name,sex,birthday,birthplace)values('" + "name0" + "','" + "sex0" + "','" + "birthpday0" + "','" + "birthplace" + "')";string sql = " insert into [Test2].[dbo].[tb1] (name,sex,birthday,birthplace)values('" + "name0" + "','" + "sex0" + "','" + "birthpday0" + "','" + "birthplace" + "')";SqlCommand command = new SqlCommand("", Sqlcon);mandText = sql;if( command.ExecuteNonQuery()>0){MessageBox.Show("插⼊成功");}}/// <summary>/// 这个插⼊990条花了⼤概2345毫秒/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button5_Click(object sender, EventArgs e){BulkInsert();}/// <summary>/// 以下四个函数为批量插⼊数据/// </summary>public void 合并多语句插⼊(){WatchDog.Reset();SqlCommand command = new SqlCommand("", Sqlcon); ;string sql = "insert into [Test2].[dbo].[tb1] (name,sex,birthday,birthplace)values";string sql1 = string.Empty;for (int i = 0; i <= 998; i++){sql1 += " ('" + "name0" + i.ToString() + "', '" + "sex0" + i.ToString() + "', '" + "birthpday0" + i.ToString() + "', '" + "birthplace" + i.ToString() + "')";if (i < 998){sql1 += ",";}}WatchDog.Start();mandText = sql + sql1;command.ExecuteNonQuery();WatchDog.Stop();richTextBox1.AppendText(WatchDog.ElapsedMilliseconds.ToString());}public void For循环逐条插⼊(){WatchDog.Reset();WatchDog.Start();SqlCommand command = new SqlCommand("", Sqlcon); ;for (int i = 0; i <= 10000; i++){mandText = "insert into [Test2].[dbo].[tb1] (name,sex,birthday,birthplace)values ('" + "name00" + i.ToString() + "', '" + "sex00" + i.ToString() + "', '" + "birthpday00" + i.ToString() + "', '" + "birthplace00" + i.ToString() + "')";command.ExecuteNonQuery();}WatchDog.Stop();richTextBox1.AppendText(WatchDog.ElapsedMilliseconds.ToString());}//bulkcopy批量插⼊,速度最快,1000条只⽤了30ms左右public void BulkInsert(){WatchDog.Reset();DataTable dt = GetTableSchema();SqlBulkCopy bulkCopy = new SqlBulkCopy(Sqlcon);bulkCopy.DestinationTableName = "[Test2].[dbo].[tb1]";bulkCopy.BatchSize = dt.Rows.Count;WatchDog.Start();//把所有的信息加⼊到表中for (int i = 0; i <998; i++){DataRow dr = dt.NewRow();dr["name"] = "NameE" + i.ToString();dr["sex"] = "sexE" + i.ToString();dr["birthday"] = "birthdayE" + i.ToString();dr["birthplace"] = "birthplaceE" + i.ToString();dr["date"] = DateTime.Now;dt.Rows.Add(dr);}//执⾏插⼊表WatchDog.Start();bulkCopy.WriteToServer(dt);WatchDog.Stop();richTextBox1.AppendText(WatchDog.ElapsedMilliseconds.ToString());}//准备好⼀个Datatable,字段与数据库⾥的相对应static DataTable GetTableSchema(){DataTable dt = new DataTable();dt.Columns.AddRange(new DataColumn[] {new DataColumn("name",typeof(string)),new DataColumn("sex",typeof(string)),new DataColumn("birthday",typeof(string)),new DataColumn("birthplace",typeof(string)),new DataColumn("date",typeof(DateTime))});return dt;}/// <summary>/// 修改数据库/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_modify_Click(object sender, EventArgs e){string sql = "UPDATE [Test2].[dbo].[tb1] SET name = 'jiba' WHERE name like '%%'";SqlCommand command = new SqlCommand("", Sqlcon);//也可以⽤SqlCommand command = new SqlCommand(sql , Sqlcon);但每次都要新建⼀个连接对象mandText = sql;int n = command.ExecuteNonQuery();if (n > 0){MessageBox.Show("修改成功");richTextBox1.AppendText(n.ToString());}}/// <summary>/// 删除满⾜条件的信息/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_delete_Click(object sender, EventArgs e){String sql = " Delete From [Test2].[dbo].[tb1] Where name Like '%name%'";SqlCommand command = new SqlCommand("", Sqlcon);//也可以⽤SqlCommand command = new SqlCommand(sql , Sqlcon);但每次都要新建⼀个连接对象mandText = sql;int n = command.ExecuteNonQuery();if ( n> 0){MessageBox.Show("删除成功");richTextBox1.AppendText(n.ToString());}}/// <summary>/// 按⽇期条件查询/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button4_Click(object sender, EventArgs e){//也可以⽤下⾯这个语句://string sql=SELECT * FROM [Test2].[dbo].[tb1] where date >'" + dateTimePicker1.Value.ToString()+"'AND date < '" + dateTimePicker2.Value.ToString()+"'";string sql = "use Test2 SELECT * FROM tb1 where date >'" + dateTimePicker1.Value.ToString()+"'AND date < '" + dateTimePicker2.Value.ToString()+"'";SqlDataAdapter Sqladpter = new SqlDataAdapter(sql, Sqlcon);DT = new DataTable();Sqladpter.Fill(DT);dataGridView1.DataSource = DT;}private void Form1_Load(object sender, EventArgs e) {}}}。
C#--SqlServer--增删改的操作以下是学习笔记:⼀,增加1,Command对象:添加://编写连接字符串string conString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=123";//创建连接对象SqlConnection conn = new SqlConnection(conString);//组合SQL语句string sql = "insert into Students (StudentName,Gender,DateOfBirth,StudentIdNo,Age,";sql += "PhoneNumber,StudentAddress,ClassId)";sql += " values('{0}','{1}','{2}',{3},{4},'{5}','{6}',{7})";//⾮值类型要加上''单引号sql = string.Format(sql, "王⼩路", "男", "1990-09-18", 120226************,23, "022-********", "天津市静海县", 2);//创建Command对象//SqlCommand cmd = new SqlCommand();//mandText = sql;//cmd.Connection = conn;SqlCommand cmd = new SqlCommand(sql, conn);//打开连接conn.Open();//执⾏操作int result = cmd.ExecuteNonQuery();//及时关闭连接conn.Close();if (result == 1) Console.WriteLine("插⼊成功!");else Console.WriteLine("插⼊失败!");Console.ReadLine();⼆,修改和删除//编写连接字符串string conString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=123"; //创建连接对象SqlConnection conn = new SqlConnection(conString);//组合SQL语句string sql = "update Students set StudentName='{0}' where StudentId={1}";sql = string.Format(sql, "王⼩路", 100009);//创建Command对象SqlCommand cmd = new SqlCommand(sql, conn);//打开连接conn.Open();//执⾏操作int result = cmd.ExecuteNonQuery();//执⾏操作//及时关闭连接conn.Close();if (result == 1) Console.WriteLine("修改成功!");else Console.WriteLine("修改失败!");Console.ReadLine();//编写连接字符串string conString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=123"; //创建连接对象SqlConnection conn = new SqlConnection(conString);//组合SQL语句string sql = "delete from Students where StudentId=" + 100022;//创建Command对象SqlCommand cmd = new SqlCommand(sql, conn);//打开连接conn.Open();//执⾏操作int result = cmd.ExecuteNonQuery();//执⾏操作//及时关闭连接conn.Close();if (result == 1) Console.WriteLine("删除成功!");else Console.WriteLine("删除失败!");Console.ReadLine();提交多条SQL语句//使⽤ExcuteNonQuery⽅法同时执⾏多条SQL语句static void Main(string[] args){string conString = "Server=.;DataBase=StudentManageDB;Uid=sa;pwd=123";SqlConnection conn = new SqlConnection(conString);//组合SQL语句string sql = "insert into Students (StudentName,Gender,DateOfBirth,StudentIdNo,";sql += "Age,PhoneNumber,StudentAddress,ClassId)";sql += " values('{0}','{1}','{2}',{3},{4},'{5}','{6}',{7})";string sql1 = string.Format(sql, "王⼩路", "男", "1990-09-18", 120226************,23, "022-********", "天津市静海县", 2);string sql2 = string.Format(sql, "王⼩刚", "男", "1992-04-15", 120226************,23, "022-********", "天津市河西区", 1);string sql3 = "update Students set StudentName='{0}' where StudentId={1}";sql3 = string.Format(sql3, "王⼩美", 100009);//将不同的SQL语句使⽤分号连接在⼀起string manySql = sql1 + ";" + sql2 + ";" + sql3;SqlCommand cmd = new SqlCommand(manySql, conn);conn.Open();int result = cmd.ExecuteNonQuery();//执⾏操作conn.Close();if (result == 3) Console.WriteLine("操作成功!");else Console.WriteLine("操作失败!");Console.ReadLine();} 获取标识列的值:新员⼯办卡后要告诉他卡号string connString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=123";SqlConnection conn = new SqlConnection(connString);//组合SQL语句,要求同时执⾏insert和selectstring sql = "insert into Students (StudentName,Gender,DateOfBirth,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)"; sql += " values('{0}','{1}','{2}',{3},{4},'{5}','{6}',{7});select @@identity";sql = string.Format(sql, "李⼤国", "男", "1993-05-18", 120226************,23, "022-********", "天津市红桥区", 3);SqlCommand cmd = new SqlCommand(sql, conn);conn.Open();object newStuId = cmd.ExecuteScalar(); //使⽤Scalar⽅法同时执⾏insert和select操作conn.Close();Console.WriteLine("新增加学员的学号:{0}", newStuId);Console.ReadLine(); 增删改的操作步骤总结。
C#SQL增删查改DBHelper:///<summary>///执⾏查询///</summary>///<param name="sql">有效的select语句</param>///<returns>返回SqlDataReader</returns>public static SqlDataReader ExecuteReader(string sql){SqlConnection con = new SqlConnection(constring);con.Open();SqlCommand cmd = new SqlCommand(sql, con);return cmd.ExecuteReader(CommandBehavior.CloseConnection);}///<summary>///执⾏查询带参数///</summary>///<param name="sql">有效的select语句</param>///<returns>返回SqlDataReader</returns>public static SqlDataReader ExecuteReader(string sql,SqlParameter parameter){SqlConnection con = new SqlConnection(constring);con.Open();SqlCommand cmd = new SqlCommand(sql, con);cmd.Parameters.Add(parameter);return cmd.ExecuteReader(CommandBehavior.CloseConnection);}///<summary>///执⾏查询带参数数组///</summary>///<param name="sql">有效的select语句</param>///<returns>返回SqlDataReader</returns>public static SqlDataReader ExecuteReader(string sql, SqlParameter[] parameters){SqlConnection con = new SqlConnection(constring);con.Open();SqlCommand cmd = new SqlCommand(sql, con);//AddRange添加数组cmd.Parameters.AddRange(parameters);return cmd.ExecuteReader(CommandBehavior.CloseConnection);}///<summary>///执⾏增删改///</summary>///<param name="sql"></param>///<returns>影响的⾏数</returns>public static int ExecuteNonQuery(string sql){using (SqlConnection con = new SqlConnection(constring)){con.Open();SqlCommand cmd = new SqlCommand(sql, con);return cmd.ExecuteNonQuery();}}public static int ExecuteNonQuery(string sql,SqlParameter[] parameters){using (SqlConnection con = new SqlConnection(constring)){con.Open();SqlCommand cmd = new SqlCommand(sql, con);//foreach (SqlParameter item in parameters)//{// cmd.Parameters.Add(item);//}cmd.Parameters.AddRange(parameters);return cmd.ExecuteNonQuery();}}public static int ExecuteNonQuery(string sql, SqlParameter parameter){using (SqlConnection con = new SqlConnection(constring)){con.Open();SqlCommand cmd = new SqlCommand(sql, con);cmd.Parameters.Add(parameter);return cmd.ExecuteNonQuery();}}DAL:public static int Insert(company model){StringBuilder strSql = new StringBuilder();strSql.Append("insert into company");strSql.Append("(FullName,ShortName,Keywords,Description,Type,Property,Style,Capital,Size,Details,Province,City,Address,Postalcode,Tel,Fax,Mailbox,Url,Link,createtime,Poss,Linkman,Product,Userid)"); strSql.Append(" values (");strSql.Append("@FullName,@ShortName,@Keywords,@Description,@Type,@Property,@Style,@Capital,@Size,@Details,@Province,@City,@Address,@Postalcode,@Tel,@Fax,@Mailbox,@Url,@Link, @Createtime,@Poss,@Linkman,@Product,@Userid)");//第⼀种:SqlParameter[] parameters ={new SqlParameter("@FullName",SqlDbType.VarChar),new SqlParameter("@ShortName",SqlDbType.VarChar),new SqlParameter("@Keywords",SqlDbType.VarChar),。
C#--SQLserver数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:SQLserver:Oracle:MySQL:Access:在⽇常的⼯作中,通常⼀个项⽬会⼤量⽤的数据库的各种基本操作。
SQLserver数据库是最为常见的⼀种数据库,本⽂则主要是记录了C#对SQL的连接、增、删、改、查的基本操作,如有什么问题还请各位⼤佬指教。
后续也将对其他⼏个常⽤的数据库进⾏相应的整理,链接已经附在⽂章开始。
话不多说,开始码代码。
引⽤:using System.Data; //DataSet引⽤集using System.Data.SqlClient; //sql引⽤集先声明⼀个SqlConnection便于后续使⽤。
private SqlConnection sql_con;//声明⼀个SqlConnectionsql打开:///<summary>/// SQLserver open///</summary>///<param name="link">link statement</param>///<returns>Success:success; Fail:reason</returns>public string Sqlserver_Open(string link){ try { sql_con = new SqlConnection(link); sql_con.Open(); return"success"; } catch (Exception ex) { return ex.Message; }}sql关闭:///<summary>/// SQLserver close///</summary>///<returns>Success:success Fail:reason</returns>public string Sqlserver_Close(){ try { if (sql_con == null) { return"No database connection"; } if (sql_con.State == ConnectionState.Open || sql_con.State == ConnectionState.Connecting) { sql_con.Close(); sql_con.Dispose(); } else { if (sql_con.State == ConnectionState.Closed) { return"success"; } } return"success"; } catch (Exception ex) { return ex.Message; }}sql的增删改:///<summary>/// SQLserver insert,delete,update///</summary>///<param name="sql">insert,delete,update statement</param>///<returns>Success:success + Number of affected rows; Fail:reason</returns> public string Sqlserver_Insdelupd(string sql){ try { int num = 0; if (sql_con == null) { return"Please open the database connection first"; } if (sql_con.State == ConnectionState.Open) { SqlCommand sqlCommand = new SqlCommand(sql, sql_con); num = sqlCommand.ExecuteNonQuery(); } else { if (sql_con.State == ConnectionState.Closed) { return"Database connection closed"; } if (sql_con.State == ConnectionState.Broken) { return"Database connection is destroyed"; } if (sql_con.State == ConnectionState.Connecting) { return"The database is in connection"; } } return"success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}sql的查:///<summary>/// SQLserver select///</summary>///<param name="sql">select statement</param>///<param name="record">Success:success; Fail:reason</param>///<returns>select result</returns>public DataSet Sqlserver_Select(string sql, out string record){ try { DataSet dataSet = new DataSet(); if (sql_con == null) { record = "Please open the database connection first"; return dataSet; }if (sql_con.State == ConnectionState.Open) { SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sql_con); sqlDataAdapter.Fill(dataSet, "sample"); sqlDataAdapter.Dispose(); record = "success"; return dataSet; return dataSet; } if (sql_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; return dataSet; } if (sql_con.State == ConnectionState.Connecting) { record = "The database is in connection"; return dataSet; } record = "ERROR"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对SQL进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。
C#操作SQLite数据库⽅法⼩结(创建,连接,插⼊,查询,删除等)本⽂实例讲述了C#操作SQLite数据库⽅法。
分享给⼤家供⼤家参考,具体如下:SQLite介绍SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.SQLite是⼀个开源、免费的⼩型RDBMS(关系型数据库),能独⽴运⾏、⽆服务器、零配置、⽀持事物,⽤C实现,内存占⽤较⼩,⽀持绝⼤数的SQL92标准。
C#操作SQLite DatabaseC#下SQLite操作驱动dll下载:C#使⽤SQLite步骤:(1)新建⼀个project(2)添加SQLite操作驱动dll引⽤(3)使⽤API操作SQLite DataBaseusing System;using System.Data.SQLite;namespace SQLiteSamples{class Program{//数据库连接SQLiteConnection m_dbConnection;static void Main(string[] args){Program p = new Program();}public Program(){createNewDatabase();connectToDatabase();createTable();fillTable();printHighscores();}//创建⼀个空的数据库void createNewDatabase(){SQLiteConnection.CreateFile("MyDatabase.sqlite");}//创建⼀个连接到指定数据库void connectToDatabase(){m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");m_dbConnection.Open();}//在指定数据库中创建⼀个tablevoid createTable(){string sql = "create table highscores (name varchar(20), score int)";SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);command.ExecuteNonQuery();}//插⼊⼀些数据void fillTable(){string sql = "insert into highscores (name, score) values ('Me', 3000)";SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);command.ExecuteNonQuery();sql = "insert into highscores (name, score) values ('Myself', 6000)";command = new SQLiteCommand(sql, m_dbConnection);command.ExecuteNonQuery();sql = "insert into highscores (name, score) values ('And I', 9001)";command = new SQLiteCommand(sql, m_dbConnection);command.ExecuteNonQuery();}//使⽤sql查询语句,并显⽰结果void printHighscores(){string sql = "select * from highscores order by score desc";SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);SQLiteDataReader reader = command.ExecuteReader();while (reader.Read())Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["score"]);Console.ReadLine();}}}操作SQLite Database的C#帮助类SQLite Helper将⼀些常⽤的功能封装⼀下,封装成SQLite Helper类using System;using System.Data;using System.Text.RegularExpressions;using System.Xml;using System.IO;using System.Collections;using System.Data.SQLite;namespace DBUtility.SQLite{public class SQLiteHelper{/// <summary>/// Creates a new <see cref="SQLiteHelper"/> instance. The ctor is marked private since all members are static./// </summary>private SQLiteHelper(){}/// <summary>/// Creates the command./// </summary>/// <param name="connection">Connection.</param>/// <param name="commandText">Command text.</param>/// <param name="commandParameters">Command parameters.</param>/// <returns>SQLite Command</returns>public static SQLiteCommand CreateCommand(SQLiteConnection connection, string commandText, params SQLiteParameter[] commandParameters) {SQLiteCommand cmd = new SQLiteCommand(commandText, connection);if (commandParameters.Length > 0){foreach (SQLiteParameter parm in commandParameters)cmd.Parameters.Add(parm);}return cmd;}/// <summary>/// Creates the command./// </summary>/// <param name="connectionString">Connection string.</param>/// <param name="commandText">Command text.</param>/// <param name="commandParameters">Command parameters.</param>/// <returns>SQLite Command</returns>public static SQLiteCommand CreateCommand(string connectionString, string commandText, params SQLiteParameter[] commandParameters){SQLiteConnection cn = new SQLiteConnection(connectionString);SQLiteCommand cmd = new SQLiteCommand(commandText, cn);if (commandParameters.Length > 0){foreach (SQLiteParameter parm in commandParameters)cmd.Parameters.Add(parm);}return cmd;}/// <summary>/// Creates the parameter./// </summary>/// <param name="parameterName">Name of the parameter.</param>/// <param name="parameterType">Parameter type.</param>/// <param name="parameterValue">Parameter value.</param>/// <returns>SQLiteParameter</returns>public static SQLiteParameter CreateParameter(string parameterName, System.Data.DbType parameterType, object parameterValue){SQLiteParameter parameter = new SQLiteParameter();parameter.DbType = parameterType;parameter.ParameterName = parameterName;parameter.Value = parameterValue;return parameter;}/// <summary>/// Shortcut method to execute dataset from SQL Statement and object[] arrray of parameter values/// </summary>/// <param name="connectionString">SQLite Connection string</param>/// <param name="commandText">SQL Statement with embedded "@param" style parameter names</param>/// <param name="paramList">object[] array of parameter values</param>/// <returns></returns>public static DataSet ExecuteDataSet(string connectionString, string commandText, object[] paramList){SQLiteConnection cn = new SQLiteConnection(connectionString);SQLiteCommand cmd = cn.CreateCommand();mandText = commandText;if (paramList != null){AttachParameters(cmd,commandText, paramList);}DataSet ds = new DataSet();if (cn.State == ConnectionState.Closed)cn.Open();SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);da.Fill(ds);da.Dispose();cmd.Dispose();cn.Close();return ds;}/// <summary>/// Shortcut method to execute dataset from SQL Statement and object[] arrray of parameter values/// </summary>/// <param name="cn">Connection.</param>/// <param name="commandText">Command text.</param>/// <param name="paramList">Param list.</param>/// <returns></returns>public static DataSet ExecuteDataSet(SQLiteConnection cn, string commandText, object[] paramList){SQLiteCommand cmd = cn.CreateCommand();mandText = commandText;if (paramList != null){AttachParameters(cmd,commandText, paramList);}DataSet ds = new DataSet();if (cn.State == ConnectionState.Closed)cmd.Dispose();cn.Close();return ds;}/// <summary>/// Executes the dataset from a populated Command object./// </summary>/// <param name="cmd">Fully populated SQLiteCommand</param>/// <returns>DataSet</returns>public static DataSet ExecuteDataset(SQLiteCommand cmd){if (cmd.Connection.State == ConnectionState.Closed)cmd.Connection.Open();DataSet ds = new DataSet();SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);da.Fill(ds);da.Dispose();cmd.Connection.Close();cmd.Dispose();return ds;}/// <summary>/// Executes the dataset in a SQLite Transaction/// </summary>/// <param name="transaction">SQLiteTransaction. Transaction consists of Connection, Transaction, /// and Command, all of which must be created prior to making this method call. </param>/// <param name="commandText">Command text.</param>/// <param name="commandParameters">Sqlite Command parameters.</param>/// <returns>DataSet</returns>/// <remarks>user must examine Transaction Object and handle transaction.connection .Close, etc.</remarks>public static DataSet ExecuteDataset(SQLiteTransaction transaction, string commandText, params SQLiteParameter[] commandParameters){if (transaction == null) throw new ArgumentNullException("transaction");if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rolled back or committed, please provide an open transaction.", "transaction");IDbCommand cmd = transaction.Connection.CreateCommand();mandText = commandText;foreach (SQLiteParameter parm in commandParameters){cmd.Parameters.Add(parm);}if (transaction.Connection.State == ConnectionState.Closed)transaction.Connection.Open();DataSet ds = ExecuteDataset((SQLiteCommand)cmd);return ds;}/// <summary>/// Executes the dataset with Transaction and object array of parameter values./// </summary>/// <param name="transaction">SQLiteTransaction. Transaction consists of Connection, Transaction, /// and Command, all of which must be created prior to making this method call. </param>/// <param name="commandText">Command text.</param>/// <param name="commandParameters">object[] array of parameter values.</param>/// <returns>DataSet</returns>/// <remarks>user must examine Transaction Object and handle transaction.connection .Close, etc.</remarks>public static DataSet ExecuteDataset(SQLiteTransaction transaction, string commandText, object[] commandParameters){if (transaction == null) throw new ArgumentNullException("transaction");if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rolled back or committed, please provide an open transaction.", "transaction"); IDbCommand cmd = transaction.Connection.CreateCommand();mandText = commandText;AttachParameters((SQLiteCommand)cmd,mandText, commandParameters);if (transaction.Connection.State == ConnectionState.Closed)transaction.Connection.Open();DataSet ds = ExecuteDataset((SQLiteCommand)cmd);return ds;}#region UpdateDataset/// <summary>/// Executes the respective command for each inserted, updated, or deleted row in the DataSet./// </summary>/// <remarks>/// e.g.:/// UpdateDataset(conn, insertCommand, deleteCommand, updateCommand, dataSet, "Order");/// </remarks>/// <param name="insertCommand">A valid SQL statement to insert new records into the data source</param>/// <param name="deleteCommand">A valid SQL statement to delete records from the data source</param>/// <param name="updateCommand">A valid SQL statement used to update records in the data source</param>/// <param name="dataSet">The DataSet used to update the data source</param>/// <param name="tableName">The DataTable used to update the data source.</param>public static void UpdateDataset(SQLiteCommand insertCommand, SQLiteCommand deleteCommand, SQLiteCommand updateCommand, DataSet dataSet, string tableName){if (insertCommand == null) throw new ArgumentNullException("insertCommand");if (deleteCommand == null) throw new ArgumentNullException("deleteCommand");if (updateCommand == null) throw new ArgumentNullException("updateCommand");if (tableName == null || tableName.Length == 0) throw new ArgumentNullException("tableName");// Create a SQLiteDataAdapter, and dispose of it after we are doneusing (SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter()){// Set the data adapter commandsdataAdapter.UpdateCommand = updateCommand;dataAdapter.InsertCommand = insertCommand;dataAdapter.DeleteCommand = deleteCommand;// Update the dataset changes in the data sourcedataAdapter.Update(dataSet, tableName);// Commit all the changes made to the DataSetdataSet.AcceptChanges();}}#endregion/// <summary>/// ShortCut method to return IDataReader/// NOTE: You should explicitly close the Command.connection you passed in as/// <param name="commandText">SQL Statement with optional embedded "@param" style parameters</param>/// <param name="paramList">object[] array of parameter values</param>/// <returns>IDataReader</returns>public static IDataReader ExecuteReader(SQLiteCommand cmd, string commandText, object[] paramList){if (cmd.Connection == null)throw new ArgumentException("Command must have live connection attached.", "cmd");mandText = commandText;AttachParameters(cmd,commandText, paramList);if (cmd.Connection.State == ConnectionState.Closed)cmd.Connection.Open();IDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);return rdr;}/// <summary>/// Shortcut to ExecuteNonQuery with SqlStatement and object[] param values/// </summary>/// <param name="connectionString">SQLite Connection String</param>/// <param name="commandText">Sql Statement with embedded "@param" style parameters</param>/// <param name="paramList">object[] array of parameter values</param>/// <returns></returns>public static int ExecuteNonQuery(string connectionString, string commandText, params object[] paramList){SQLiteConnection cn = new SQLiteConnection(connectionString);SQLiteCommand cmd = cn.CreateCommand();mandText = commandText;AttachParameters(cmd,commandText, paramList);if (cn.State == ConnectionState.Closed)cn.Open();int result = cmd.ExecuteNonQuery();cmd.Dispose();cn.Close();return result;}public static int ExecuteNonQuery(SQLiteConnection cn, string commandText, params object[] paramList){SQLiteCommand cmd = cn.CreateCommand();mandText = commandText;AttachParameters(cmd,commandText, paramList);if (cn.State == ConnectionState.Closed)cn.Open();int result = cmd.ExecuteNonQuery();cmd.Dispose();cn.Close();return result;}/// <summary>/// Executes non-query sql Statment with Transaction/// </summary>/// <param name="transaction">SQLiteTransaction. Transaction consists of Connection, Transaction, /// and Command, all of which must be created prior to making this method call. </param>/// <param name="commandText">Command text.</param>/// <param name="paramList">Param list.</param>/// <returns>Integer</returns>/// <remarks>user must examine Transaction Object and handle transaction.connection .Close, etc.</remarks>public static int ExecuteNonQuery(SQLiteTransaction transaction, string commandText, params object[] paramList){if (transaction == null) throw new ArgumentNullException("transaction");if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rolled back or committed, please provide an open transaction.", "transaction"); IDbCommand cmd = transaction.Connection.CreateCommand();mandText = commandText;AttachParameters((SQLiteCommand)cmd,mandText, paramList);if (transaction.Connection.State == ConnectionState.Closed)transaction.Connection.Open();int result = cmd.ExecuteNonQuery();cmd.Dispose();return result;}/// <summary>/// Executes the non query./// </summary>/// <param name="cmd">CMD.</param>/// <returns></returns>public static int ExecuteNonQuery(IDbCommand cmd){if (cmd.Connection.State == ConnectionState.Closed)cmd.Connection.Open();int result = cmd.ExecuteNonQuery();cmd.Connection.Close();cmd.Dispose();return result;}/// <summary>/// Shortcut to ExecuteScalar with Sql Statement embedded params and object[] param values/// </summary>/// <param name="connectionString">SQLite Connection String</param>/// <param name="commandText">SQL statment with embedded "@param" style parameters</param>/// <param name="paramList">object[] array of param values</param>/// <returns></returns>public static object ExecuteScalar(string connectionString, string commandText, params object[] paramList){SQLiteConnection cn = new SQLiteConnection(connectionString);SQLiteCommand cmd = cn.CreateCommand();mandText = commandText;AttachParameters(cmd,commandText, paramList);if (cn.State == ConnectionState.Closed)cn.Open();object result = cmd.ExecuteScalar();cmd.Dispose();cn.Close();return result;}/// <returns>XmlReader</returns>public static XmlReader ExecuteXmlReader(IDbCommand command){ // open the connection if necessary, but make sure we// know to close it when we�re done.if (command.Connection.State != ConnectionState.Open){command.Connection.Open();}// get a data adapterSQLiteDataAdapter da = new SQLiteDataAdapter((SQLiteCommand)command);DataSet ds = new DataSet();// fill the data set, and return the schema informationda.MissingSchemaAction = MissingSchemaAction.AddWithKey;da.Fill(ds);// convert our dataset to XMLStringReader stream = new StringReader(ds.GetXml());command.Connection.Close();// convert our stream of text to an XmlReaderreturn new XmlTextReader(stream);}/// <summary>/// Parses parameter names from SQL Statement, assigns values from object array , /// and returns fully populated ParameterCollection./// </summary>/// <param name="commandText">Sql Statement with "@param" style embedded parameters</param>/// <param name="paramList">object[] array of parameter values</param>/// <returns>SQLiteParameterCollection</returns>/// <remarks>Status experimental. Regex appears to be handling most issues. Note that parameter object array must be in same ///order as parameter names appear in SQL statement.</remarks> private static SQLiteParameterCollection AttachParameters(SQLiteCommand cmd, string commandText, params object[] paramList){if (paramList == null || paramList.Length == 0) return null;SQLiteParameterCollection coll = cmd.Parameters;string parmString = commandText.Substring(commandText.IndexOf("@"));// pre-process the string so always at least 1 space after a comma.parmString = parmString.Replace(",", " ,");// get the named parameters into a match collectionstring pattern = @"(@)\S*(.*?)\b";Regex ex = new Regex(pattern, RegexOptions.IgnoreCase);MatchCollection mc = ex.Matches(parmString);string[] paramNames = new string[mc.Count];int i = 0;foreach (Match m in mc){paramNames[i] = m.Value;i++;}// now let's type the parametersint j = 0;Type t = null;foreach (object o in paramList){t = o.GetType();SQLiteParameter parm = new SQLiteParameter();switch (t.ToString()){case ("DBNull"):case ("Char"):case ("SByte"):case ("UInt16"):case ("UInt32"):case ("UInt64"):throw new SystemException("Invalid data type");case ("System.String"):parm.DbType = DbType.String;parm.ParameterName = paramNames[j];parm.Value = (string)paramList[j];coll.Add(parm);break;case ("System.Byte[]"):parm.DbType = DbType.Binary;parm.ParameterName = paramNames[j];parm.Value = (byte[])paramList[j];coll.Add(parm);break;case ("System.Int32"):parm.DbType = DbType.Int32;parm.ParameterName = paramNames[j];parm.Value = (int)paramList[j];coll.Add(parm);break;case ("System.Boolean"):parm.DbType = DbType.Boolean;parm.ParameterName = paramNames[j];parm.Value = (bool)paramList[j];coll.Add(parm);break;case ("System.DateTime"):parm.DbType = DbType.DateTime;parm.ParameterName = paramNames[j];parm.Value = Convert.ToDateTime(paramList[j]);coll.Add(parm);break;case ("System.Double"):parm.DbType = DbType.Double;parm.ParameterName = paramNames[j];parm.Value = Convert.ToDouble(paramList[j]);coll.Add(parm);break;case ("System.Decimal"):parm.DbType = DbType.Decimal;parm.ParameterName = paramNames[j];parm.Value = Convert.ToDecimal(paramList[j]);parm.Value = (System.Guid)(paramList[j]);break;case ("System.Object"):parm.DbType = DbType.Object;parm.ParameterName = paramNames[j];parm.Value = paramList[j];coll.Add(parm);break;default:throw new SystemException("Value is of unknown data type");} // end switchj++;}return coll;}/// <summary>/// Executes non query typed params from a DataRow/// </summary>/// <param name="command">Command.</param>/// <param name="dataRow">Data row.</param>/// <returns>Integer result code</returns>public static int ExecuteNonQueryTypedParams(IDbCommand command, DataRow dataRow){int retVal = 0;// If the row has values, the store procedure parameters must be initializedif (dataRow != null && dataRow.ItemArray.Length > 0){// Set the parameters valuesAssignParameterValues(command.Parameters, dataRow);retVal = ExecuteNonQuery(command);}else{retVal = ExecuteNonQuery(command);}return retVal;}/// <summary>/// This method assigns dataRow column values to an IDataParameterCollection/// </summary>/// <param name="commandParameters">The IDataParameterCollection to be assigned values</param>/// <param name="dataRow">The dataRow used to hold the command's parameter values</param>/// <exception cref="System.InvalidOperationException">Thrown if any of the parameter names are invalid.</exception>protected internal static void AssignParameterValues(IDataParameterCollection commandParameters, DataRow dataRow){if (commandParameters == null || dataRow == null){// Do nothing if we get no datareturn;}DataColumnCollection columns = dataRow.Table.Columns;int i = 0;// Set the parameters valuesforeach (IDataParameter commandParameter in commandParameters){// Check the parameter nameif (commandParameter.ParameterName == null ||commandParameter.ParameterName.Length <= 1)throw new InvalidOperationException(string.Format("Please provide a valid parameter name on the parameter #{0}, the ParameterName property has the following value: '{1}'.", i, commandParameter.ParameterName));if (columns.Contains(commandParameter.ParameterName))commandParameter.Value = dataRow[commandParameter.ParameterName];else if (columns.Contains(commandParameter.ParameterName.Substring(1)))commandParameter.Value = dataRow[commandParameter.ParameterName.Substring(1)];i++;}}/// <summary>/// This method assigns dataRow column values to an array of IDataParameters/// </summary>/// <param name="commandParameters">Array of IDataParameters to be assigned values</param>/// <param name="dataRow">The dataRow used to hold the stored procedure's parameter values</param>/// <exception cref="System.InvalidOperationException">Thrown if any of the parameter names are invalid.</exception>protected void AssignParameterValues(IDataParameter[] commandParameters, DataRow dataRow){if ((commandParameters == null) || (dataRow == null)){// Do nothing if we get no datareturn;}DataColumnCollection columns = dataRow.Table.Columns;int i = 0;// Set the parameters valuesforeach (IDataParameter commandParameter in commandParameters){// Check the parameter nameif (commandParameter.ParameterName == null ||commandParameter.ParameterName.Length <= 1)throw new InvalidOperationException(string.Format("Please provide a valid parameter name on the parameter #{0}, the ParameterName property has the following value: '{1}'.",i, commandParameter.ParameterName));if (columns.Contains(commandParameter.ParameterName))commandParameter.Value = dataRow[commandParameter.ParameterName];else if (columns.Contains(commandParameter.ParameterName.Substring(1)))commandParameter.Value = dataRow[commandParameter.ParameterName.Substring(1)];i++;}}/// <summary>/// This method assigns an array of values to an array of IDataParametersprotected void AssignParameterValues(IDataParameter[] commandParameters, params object[] parameterValues){if ((commandParameters == null) || (parameterValues == null)){// Do nothing if we get no datareturn;}// We must have the same number of values as we pave parameters to put them inif (commandParameters.Length != parameterValues.Length){throw new ArgumentException("Parameter count does not match Parameter Value count.");}// Iterate through the IDataParameters, assigning the values from the corresponding position in the// value arrayfor (int i = 0, j = commandParameters.Length, k = 0; i < j; i++){if (commandParameters[i].Direction != ParameterDirection.ReturnValue){// If the current array value derives from IDataParameter, then assign its Value propertyif (parameterValues[k] is IDataParameter){IDataParameter paramInstance;paramInstance = (IDataParameter)parameterValues[k];if (paramInstance.Direction == ParameterDirection.ReturnValue){paramInstance = (IDataParameter)parameterValues[++k];}if (paramInstance.Value == null){commandParameters[i].Value = DBNull.Value;}else{commandParameters[i].Value = paramInstance.Value;}}else if (parameterValues[k] == null){commandParameters[i].Value = DBNull.Value;}else{commandParameters[i].Value = parameterValues[k];}k++;}}}}}更多关于C#相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家C#程序设计有所帮助。
c#操作数据库的增删改查语句及DataGridView简单使⽤下⾯是要⽤户名和密码连接数据库的操作:⼀、定义连接字符串,⽤来链接SQL Serverstring str_con = "server=.(服务器名称⼀般为 . );database=WordBook(数据库名称);uid=sa(服务器登录名);pwd=123(服务器密码)";⼆、有了链接字符串之后,开始数据库操作1、数据库查询定义了⼀个查询⽅法,⽤来调⽤:public DataSet queryDatabase(string sql) //sql是查询语句{//储存数据的⼯具初始化DataSet ds = new DataSet();//相当于链接数据库的⼀个⼯具类(连接字符串)using (SqlConnection con = new SqlConnection(str_con)){con.Open(); //打开//⽤SqlConnection⼯具链接数据库,在通过sql查询语句查询结果现存⼊sql适配器SqlDataAdapter sda = new SqlDataAdapter(sql,con); //(查询语句和连接⼯具)sda.Fill(ds); //将适配器数据存⼊DataSet⼯具中con.Close(); //⽤完关闭SqlConnection⼯具return ds;}}在需要查询数据库的地⽅调⽤此⽅法:private void query() {//查询WordBook表中,book_key字段数值为7的那⼀⾏数据//string sql = "select * from Word_Book where book_key='7'";string sql = "select * from Word_Book "; //查询全表DataSet ds = help.queryDatabase(sql); //查询到数据DataTable dt = ds.Tables[0]; //把查到的数据存⼊数据表中sqlDataResult.DataSource = dt; //把数据赋值给gridView展⽰(全表)// string str=dt.Rows[0][1].ToString();//查找表中某⼀个内容// MessageBox.Show(str);}2、数据库添加、删除、修改C#中数据库的添加、删除、修改⽤的是同断代码,所以定义了⼀个⽅法,⽤来调⽤:public int changeSqlData(String sql){using(SqlConnection con=new SqlConnection(str_con)){con.Open();//操作数据库的⼯具SqlCommandSqlCommand cmd = new SqlCommand(sql, con);//(操作语句和链接⼯具)int i=cmd.ExecuteNonQuery();//执⾏操作返回影响⾏数()con.Close();return i;}}在需要操作数据库的地⽅调⽤此⽅法:①数据库添加:private void btn_add_Click(object sender, EventArgs e){//sql添加数据 insert into 表名(字段,字段...) values(‘内容’,‘内容’...)string sql = "insert into Word_Book(book_word_CN,book_word_JP,book_word_Roma,book_nominal," +"book_gloze) values('" + book_word_CN.Text.Trim()+"','"+ book_word_JP .Text.Trim() + "','"+ book_word_Roma .Text.Trim() + "','"+ book_nominal.Text.Trim() + "','" + book_gloze.Text.Trim() + "')";int i=help.changeSqlData(sql);if (i == 0) MessageBox.Show("添加失败", "提⽰:");else MessageBox.Show("添加成功", "提⽰:");}②数据库删除:private void btn_delete_Click(object sender, EventArgs e){//根据同个字段中不同内容删除多⾏//delete from Word_Book where book_key in (1,2,3)//sql删除数据delete 表名 where 字段='内容'单个条件⽤or链接,多个条件⽤and链接string sql = "delete from Word_Book where book_key='"+book_key.Text.Trim()+"'";int i=help.changeSqlData(sql);if (i == 0) MessageBox.Show("删除失败", "提⽰:");else MessageBox.Show("删除成功", "提⽰:");}②数据库更新:private void btn_update_Click(object sender, EventArgs e){//根据条件修改多个字段内容//update 表名 set 字段='内容', 字段='内容' where 条件字段='内容'string sql = "update Word_Book set book_word_CN='"+book_word_CN.Text.Trim()+"', book_word_JP='"+book_word_JP.Text.Trim()+"'where book_key='" + book_key.Text.Trim()+"'";int i = help.changeSqlData(sql);if (i == 0) MessageBox.Show("修改失败", "提⽰:");else MessageBox.Show("修改成功", "提⽰:");}3、数据库事务操作数据库⽤数据库事务相当于把数据库操作捆绑执⾏,只要其中⼀条sql语句失败,直接返回,不进⾏数据库操作,只有全部执⾏正确,才会更新数据库。
C语言数据库编程数据库连接和数据操作的方法C语言数据库编程:数据库连接和数据操作的方法在现代软件开发中,数据库是处理和存储数据的重要组成部分。
C语言作为一种经典的编程语言,也具备了对数据库进行连接和数据操作的能力。
本文将介绍C语言中常用的数据库连接和数据操作的方法,帮助读者了解如何在C语言环境下进行数据库编程。
一、数据库连接方法1. 使用ODBC(Open Database Connectivity)连接数据库ODBC是一种开放的数据库连接标准,可以在不同的数据库管理系统间进行数据交互。
在C语言中,可以通过ODBC API来连接数据库。
首先需要安装ODBC驱动,并在代码中引入相关头文件。
然后利用ODBC API提供的函数,进行数据库连接的建立和关闭。
2. 使用MySQL提供的C语言库连接MySQL数据库对于MySQL数据库,可以使用MySQL提供的C语言库进行连接。
首先需要安装MySQL C Connector,并在代码中引入相应的头文件。
然后通过函数调用,使用用户名、密码等信息进行数据库连接,并进行相应的错误处理。
二、数据操作方法1. 数据库查询操作数据库查询是对数据库中的数据进行检索的操作。
在C语言中,可以使用SQL语句来进行查询操作。
首先需要使用SQL语句构建查询语句,然后通过相应的数据库操作函数执行查询,并将结果返回到程序中进行处理。
2. 数据库插入操作数据库插入操作是向数据库中插入新的数据记录。
在C语言中,可以使用SQL语句构建插入语句,并通过数据库操作函数执行插入操作。
需要注意正确处理数据类型和插入的数据完整性。
3. 数据库更新操作数据库更新操作是对数据库中已有数据进行修改的操作。
在C语言中,可以使用SQL语句构建更新语句,并通过数据库操作函数执行更新操作。
4. 数据库删除操作数据库删除操作是从数据库中删除指定的数据记录。
在C语言中,可以使用SQL语句构建删除语句,并通过数据库操作函数执行删除操作。
C#连接MySQL,并完成对数据库的增删查改using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data.MySqlClient;namespace MySQL_Using{class Program{static void Main(string[] args){//数据库名为test1// String mysqlStr = "Database=自己的数据库名;Data Source=127.0.0.1;User Id=改为自己;Password=自己的密码;pooling=false;CharSet=utf8;port=3306";String mysqlStr = "Database=test1;Data Source=127.0.0.1;UserId=root;Password=123456;pooling=false;CharSet=utf8;port=33 06";//MySql连接类MySqlConnection mysql = new MySqlConnection(mysqlStr);//查询sql//account表格String abc = "account";String sqlSearch = "select * from ";sqlSearch = sqlSearch + abc;//sql 插入数据String sqlinsert = "insert into account values(5,'pyq','pyq')";//MySql的命令类//查询语句MySqlCommand mySqlCommand = new MySqlCommand(sqlSearch, mysql);//插入数据// MySqlCommand mySqlCommand = new MySqlCommand(sqlinsert, mysql);//打开连接mysql.Open();//建立流//数据读取类MySqlDataReader reader = mySqlCommand.ExecuteReader();try{//每次读取一个字节while (reader.Read()){if (reader.HasRows)//是否读取玩一行{//从数据库读取的数据要进行类型转换//0,1,2,表示在数据库表中的位置Console.WriteLine("ID:" + reader.GetInt32(0) + "|账号:" + reader.GetString(1) + "|密码:" + reader.GetString(2));}}catch (Exception){Console.WriteLine("查询失败了!");}finally{reader.Close();//关闭流}mysql.Close();Console.Read();}/// <summary>/// 建立mysql数据库链接/// </summary>/// <returns></returns>public static MySqlConnection getMySqlCon(){String mysqlStr = "Database=test1;Data Source=127.0.0.1;UserId=root;Password=123456;pooling=false;CharSet=utf8;port=33 06";// String mySqlCon = ConfigurationManager.ConnectionStrings["MySqlCon"].Connecti onString;MySqlConnection mysql = new MySqlConnection(mysqlStr);return mysql;/// <summary>/// 建立执行命令语句对象/// </summary>/// <param name="sql"></param>/// <param name="mysql"></param>/// <returns></returns>public static MySqlCommand getSqlCommand(String sql, MySqlConnection mysql){MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql);// MySqlCommand mySqlCommand = new MySqlCommand(sql);// mySqlCommand.Connection = mysql;return mySqlCommand;}/// <summary>/// 查询并获得结果集并遍历/// </summary>/// <param name="mySqlCommand"></param>public static void getResultset(MySqlCommand mySqlCommand){MySqlDataReader reader = mySqlCommand.ExecuteReader();try{while (reader.Read())if (reader.HasRows){Console.WriteLine("编号:" + reader.GetInt32(0) + "|姓名:" + reader.GetString(1) + "|年龄:" + reader.GetString(2));}}}catch (Exception){Console.WriteLine("查询失败了!");}finally{reader.Close();}}/// <summary>/// 添加数据/// </summary>/// <param name="mySqlCommand"></param>public static void getInsert(MySqlCommand mySqlCommand){try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("插入数据失败了!" + message);}}/// <summary>/// 修改数据/// </summary>/// <param name="mySqlCommand"></param>public static void getUpdate(MySqlCommand mySqlCommand){try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("修改数据失败了!" + message);}}/// <summary>/// 删除数据/// </summary>/// <param name="mySqlCommand"></param>public static void getDel(MySqlCommand mySqlCommand) {try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("删除数据失败了!" + message); }}}}。
C#连接SQL Server数据库并进展增删查改操作详细代码在下边,直接可以使用设计好的C#界面:Form Les 图Form2.es i 31For4n3.es 更Progyrn心共3个窗体。
数据库:13 lj Student因」•数据,库黄系團曰i」轰0 _□至统表田口W bo星本信息妾® LJ 1EB£■亠同女诃® Qi可竊tl性匡口Service Broker 国L J ffliSE 口宾全怪运行后的界面代码:〔Forml〕publicpartialclasS^orml : Form{public Form1(){In itializep onen t();}privatevoid butt on 1_Click( object sen der, Even tArgs e){Form1_Load(se nder, e);}privatevoid Form1_Load(object sen der,Eve ntArgs e){try{SqlC onn ecti on conn = n ewSqlC onn ection(); string str = "Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True" conn.ConnectionString = str;conn.Open();Sqlmand cmd = newSqlmand();cmd.mandText = "select * from 根本信息表";cmd.Connection = conn;SqlDataAdapter sda = newSqlDataAdapter(cmd); DataSet ds = newDataSet();sda.Fill(ds, "根本信息表");this.dataGridView1.DataSource = ds; this.dataGridView1.DataMember = " 根本信息表";this.dataGridView1.AutoGenerateColumns = true;for (int i = 1; i < this.dataGridView1.ColumnCount; i++){ this.dataGridView1.Columns[i].DefaultCellStyle.SelectionBackColor = Color.White; this.dataGridView1.Columns[i].DefaultCellStyle.SelectionForeColor = Color.Black;this.dataGridView1.Columns[i].ReadOnly = true;}conn.Close();} catch(Exception ee){MessageBoxShow("错误:"+ ee.Message,"错误");}}privatevoid button2_Click(object sender, EventArgs e){if (this.dataGridView1.SelectedCells==null){MessageBoxShow("请选择要删| 除的项!","错误”,MessageBoxButtonsOK,MessageBoxIcon.Error);}else{if (this.dataGridView1.CurrentCell.ColumnIndex == 0){string st = this.dataGridView1[1, this .dataGridView1.CurrentCell.RowIndex].Value.ToString (); SqlConnection conn = newSqlConnection();string str = "Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True"conn.ConnectionString = str;conn.Open();Sqlmand cmd = newSqlmand();cmd.mandText = "delete from 根本信息表where ='" + st + "'"; cmd.Connection =conn;cmd.ExecuteNonQuery();conn.Close();}}}privatevoid button3_Click( object sender, EventArgs e){if (this.textBox1.Text.Trim() == ""){MessageBoxShow("请输入要查询的!","提示”);}else{SqlConnection conn = newSqlConnection();string str = "Data Source=ZWEIQUAN-PC;Initial Catalog=Student;Integrated Security=True"conn.ConnectionString = str; conn.Open();Sqlmand cmd = newSqlmand();cmd.mandText = "select * from 根本信息表where ='" + this.textBox1.Text.Trim() + "'";cmd.Connection = conn;SqlDataAdapter sda = newSqlDataAdapter(cmd);DataSet ds = newDataSet();sda.Fill(ds);this.dataGridView1.DataSource = ds; this.dataGridView1.DataMember = ds.Tables[0].ToString();this.dataGridView1.AutoGenerateColumns = true;conn.Close();}}privatevoid button4_Click(object sender, EventArgs e){Form2 f = newForm2();f.Show();}privatevoid button5_Click(object sender,EventArgs e){Form3 f = newForm3();f.id = Convert.ToInt32( this.dataGridView1[0,this.dataGridView1.CurrentCell.RowIndex].Value.ToString());f.Show();}}(Form2)publicpartialclassForm2 : Form{public Form2(){Initializeponent();}privatevoid Form2_Load( object sender,EventArgs e){boBox1.ltems.Add(”男”);boBox1.ltems.Add(” 女");boBox2」tems.Add(” 计算机11-1 班");boBox2」tems.Add(” 计算机11-2 班");boBox2」tems.Add(” 计算机11-3 班");boBox1.DropDownStyle = boBoxStyle.DropDownList;boBox2.DropDownStyle = boBoxStyle.DropDownList; get_bh();}privatevoid get_bh(){SqlConnection conn = newSqlConnection();string str = "Data Source=ZWElQUAN-PC;lnitial Catalog=Student;lntegrated Security=True"conn.ConnectionString = str;conn.Open();Sqlmand cmd = newSqlmand(); cmd.mandText = "select * from 根本信息表";//cmd.mandText = "select isnull(max( 编号),0)+1 from 根本信息表"; cmd.Connection = conn; SqlDataAdapter sda = newSqlDataAdapter(cmd);DataSet ds = newDataSet();sda.Fill(ds);int t = ds.Tables[0].Rows.Count;int bh = t - 1;this.textBox1.Text = (Int32 .Parse(ds.Tables[0].Rows[bh][编号"].ToString()) + 1).ToString();//this.textBox1.Text = cmd.ExecuteScalar().ToString();conn.Close();privatevoid button1_Click( object sender, EventArgs e){if (textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || boBox1.Text.Trim() == "" || boBox2.Text.Trim() == ""){MessageBoxShow("请输入完整信息!”,”错误”,MessageBoxButtonsOK, MessageBoxIconError);}else{string str1 = textBox3.Text.Trim();int l = str1.Length;for (int i = 0; i < l; i++){if (!char.IsNumber(str1[i])){MessageBoxShow("年龄输入有误!","错误", MessageBoxButtonsOK, MessageBoxIconError);textBox3.SelectAll(); textBox3.Focus();return;}}SqlConnection conn = newSqlConnection(); string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True" ; conn.ConnectionString = str;conn.Open();Sqlmand cmd = newSqlmand();cmd.mandText = "insert into根本信息表(编号,性别,年龄班级)values编号” 性别,年龄,班级)";cmd.Connection = conn;cmd.Parameters.Add"编号”,SqlDbType.l nt); cmd.Parameters.Add("",SqlDbType.NVarChar, 50);cmd.Parameters.Add"性别", SqlDbType.NVarChar, 50); cmd.Parameters.Add"年龄",SqlDbType.I nt);cmd.Parameters.Add"班级", SqlDbType.NVarChar, 50); cmd.Parameters"编号"].Value = textBox1.Text.Trim(); cmd.Parameters"["].Value = textBox2.Text.Trim();cmd.Parameters"性别"].Value = boBox1.Text.Trim(); cmd.Parameters"年龄"].Value= textBox3.Text.Trim(); cmd.Parameters"班级"].Value = boBox2.Text.Trim();cmd.ExecuteNonQuery();conn.Close();this.Close();}privatevoid button2_Click( object sender, EventArgs e) {this.Close();}}(Form3)publicpartialclassForm3 : Form{public Form3(){Initializeponent();}publicint id;privatevoid Form3_Load( object sender,EventArgs e){textBox1.Text = id.ToString();SqlConnection conn = newSqlConnection("Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True");Sqlmand cmd = newSqlmand();cmd.Connection = conn;conn.Open();cmd.mandText = "select * from 根本信息表where 编号=" + id.ToString(); SqlDataAdapter sda = newSqlDataAdapter(cmd);DataSet ds = newDataSet();sda.Fill(ds);if (ds.Tables[0].Rows.Count == 1){this.textBox2.Text = (ds.Tables[0].Rows[0]["" ].ToString());this.textBox3.Text = (ds.Tables[0].Rows[0][” 性别”].ToStri ng());this.textBox4.Text = (ds.Tables[0].Rows[0][” 年龄”].ToStri ng());this.textBox5.Text = (ds.Tables[0].Rows[0『班级"].ToStri ng()); conn.Close();}}privatevoid button1_Click( object sender, EventArgs e){ if (textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || textBox5.Text.Trim() == ""){MessageBoxShow("请输入完整信息!”,”错误”,MessageBoxButtonsOK, MessageBoxIconError);}else{string str1 = textBox4.Text.Trim();int l = str1.Length;for (int i = 0; i < l; i++){if (!char.IsNumber(str1[i])){MessageBoxShow("年龄输入有误!","错误", MessageBoxButtonsOK, MessageBoxIconError);textBox4.SelectAll(); textBox4.Focus();return;}}SqlConnection conn = newSqlConnection(); string str = "Data Source=ZWEIQUAN-PC;InitialCatalog=Student;Integrated Security=True" ; conn.ConnectionString = str;conn.Open();Sqlmand cmd = newSqlmand();cmd.mandText = "update 根本信息表set 编号=编号,=,性别=性别,年龄= 年龄,班级=班级where 编号=编号";cmd.Connection = conn; cmd.Parameters.Add(" 编号", SqlDbType . I nt) ;cmd.Parameters.Add("", SqlDbType.NVarChar, 50);cmd.Parameters.Add(" 性别", SqlDbType.NVarChar, 50); cmd.Parameters.Add"年龄”,SqlDbType.l nt);cmd.Parameters.Add(" 班级", SqlDbType.NVarChar, 50); cmd.Parameters"编号"].Value = textBox1.Text.Trim(); cmd.Parameters"["].Value = textBox2.Text.Trim();cmd.Parameters"性别"].Value = textBox3.Text.Trim(); cmd.Parameters"年龄"].Value= textBox4.Text.Trim(); cmd.Parameters"班级"].Value = textBox5.Text.Trim(); cmd.ExecuteNonQuery(); conn.Close();this.Close();}privatevoid button2_Click( object sender, EventArgs e){ this.Close();}}注:"Data Source= ZWEIQUAN-PC ;Initial Catalog= Student;Integrated Security=True" ZWEIQUAN-PC :计算机名Student:对应的数据库名称。
CC++语⾔操作sqlite数据库(增删改查)在某项⽬中,需要在前端相机中做⼈脸⽐对,因此需要在前端相机中增加⼀个⼈脸底库,⼈脸底库由uuid和⼈脸特征值组成。
其中特征值为512个float 数据,移植sqlite⽤来保存底库信息,⾸先写了⼀个demo,验证可⾏性之后应⽤到实际项⽬中sqlite3 * db= NULL;int rc = 0;char * sql = new char[800];//这个要适当的申请⼤⼀点,要不然不够⽤。
char * zErrMsg = NULL;string id1 = "aaa";//⽤来模拟32位的uuid.std::vector<float> feature1{0.12, 0.23, 0.34, 0.45, 0.56, 0.67};//⽤来模拟512个⼈脸特征值.string id2 = "bbb";//⽤来模拟32位的uuid.std::vector<float> feature2{1.12, 1.23, 1.34, 1.45, 1.56, 1.67};//⽤来模拟512个⼈脸特征值.string id3 = "ccc";//⽤来模拟32位的uuid.std::vector<float> feature3{2.12, 2.23, 2.34, 2.45, 2.56, 2.67};//⽤来模拟512个⼈脸特征值.string id4 = "ddd";//⽤来模拟32位的uuid.std::vector<float> feature4{3.12, 3.23, 3.34, 3.45, 3.56, 3.67};//⽤来模拟512个⼈脸特征值.//先把⼈脸特征值的float数组转成json,然后保存到数据库中。
cjson的源码和例程在你⾃⼰的github上保存了cJSON *root1, *js_feature1;root1 = cJSON_CreateObject();cJSON_AddItemToObject(root1, "face_feature1", js_feature1 = cJSON_CreateArray());for(int i = 0; i < feature1.size(); i++){cJSON_AddItemToArray(js_feature1, cJSON_CreateNumber(feature1.at(i)));}char *s1 = cJSON_PrintUnformatted(root1);printf("s1:%s\n", s1);//先把⼈脸特征值的float数组转成json,然后保存到数据库中。
C#中对sqlserver进行增删改查操作(简单易懂)展开全文1对于sqlserver这一块1、添加引用using System.Data;using System.Data.SqlData;2、建立于数据库的连接,建议将它做成一个方法,方便多次利用。
string sqlconnection = "data source = "注解1";database = 注解2;uid = "注解3";pwd ="注解4"";(其实还有很多种写法)可以参考/delphinet/archive/2011/06/24/208876 5.html3、经常用到的对象有:SqlConnection,SqlAdapter,SqlCommand、Dataset、DataGrid和DataReader等,以SqlConnection,SqlAdapter,SqlCommand、Dataset、DataGrid 对象,操作SQL的实例数据库Northwind中的Categorys表为例说明(假定数据库在本地,数据库访问的用户名为user,密码为123456):接下来做一下四个操作的实现第一、查询数据:stringMyConn="server=127.0.0.1;uid=user;pwd=123456;database=N orthwind;Trusted_Connection=no";//定义数据库连接参数SqlConnection MyConnection=new SqlConnection(MyConn);//定义一个数据连接实例SqlCommand MyCommand=new SqlCommand("SELECT CategoryID, CategoryName, Description FROM Categories",MyConnection); //定义一个数据库操作指令SqlDataAdapter SelectAdapter=new SqlDataAdapter();//定义一个数据适配器SelectAdapter.SelectCommand=MyCommand;//定义数据适配器的操作指令DataSet MyDataSet=new DataSet();//定义一个数据集MyConnection.Open();//打开数据库连接SelectAdapter.SelectCommand.ExecuteNonQuery();//执行数据库查询指令MyConnection.Close();//关闭数据库SelectAdapter.Fill(MyDataSet);//填充数据集DataGrid1.DataSource=MyDataSet;DataGrid1.DataBind();//将数据表格用数据集中的数据填充第二、添加数据stringMyConn="server=127.0.0.1;uid=user;pwd=123456;database=N orthwind;Trusted_Connection=no";SqlConnection MyConnection=new SqlConnection(MyConn);string MyInsert="insert into Categories(CategoryName, Description)values('"+Convert.T oString(TextBox2.Text)+"','"+Con vert.ToString(TextBox3.Text)+"')";SqlCommand MyCommand=new SqlCommand(MyInsert,MyConnection);try//异常处理{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();}catch(Exception ex){Console.WriteLine("{0} Exception caught.", ex);}第三、修改数据string categoryName=TextBox2.Text;string categoryDescription=TextBox3.Text;stringMyConn="server=127.0.0.1;uid=user;pwd=123456;database=N orthwind;Trusted_Connection=no";SqlConnection MyConnection=new SqlConnection(MyConn);string MyUpdate="Update Categories set CategoryName='"+categoryName+"',Description='"+category Description+"' where CategoryID="+TextBox1.Text;SqlCommand MyCommand=new SqlCommand(MyUpdate,MyConnection);try{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();TextBox1.Text="";}catch(Exception ex){Console.WriteLine("{0} Exception caught.", ex);}第四、删除数据stringMyConn="server=127.0.0.1;uid=user;pwd=123456;database=N orthwind;Trusted_Connection=no";SqlConnection MyConnection=new SqlConnection(MyConn);string MyDelete="Delete from Categories where CategoryID="+TextBox1.T ext;SqlCommand MyCommand=new SqlCommand(MyDelete,MyConnection);try{MyConnection.Open();MyCommand.ExecuteNonQuery();MyConnection.Close();TextBox1.Text="";}catch(Exception ex){Console.WriteLine("{0} Exception caught.", ex);}。
c#连接数据库的增删改查实例本次实现的是visual studio 的窗体应⽤程序+sql server的增删改查操作。
1.⾸先看⼀下数据库的表结构,⽐较简单,只有⼀个表2.看⼀下项⽬的⽬录,只有标注的三个⽂件是需要修改的。
3.然后看⼀下界⾯的实现,只有以下两个界⾯,Form1这个界⾯的上半部分是⼀个ToolStrip,下⾯的部分是DataGridView。
Edit界⾯就是⼀些label,textBox以及button的组合,直接通过拖拽建议相应的界⾯即可。
建⽴完页⾯后注意要修改相应插件的名称,就如第三张图所⽰,第三张图对应的是第⼀张图的DataGridView的名称。
其他的插件的名称可以在源代码中找对应的,⽐较容易。
4.具体代码实现1using System;2using System.Collections.Generic;3using ponentModel;4using System.Data;5using System.Data.SqlClient;6using System.Drawing;7using System.Linq;8using System.Text;9using System.Threading.Tasks;10using System.Windows.Forms;1112namespace zengshangaicha13 {14public partial class Form1 : Form15 {16public Form1()17 {18 InitializeComponent();19 }2021 DataSet ds = new DataSet();22//获取数据⽅法23private void GetDB()24 {2526 ds = new DataSet();27 DBhelper dbhelper = new DBhelper();28try29 {30string sql = @"Select Sno 学号,Sname 姓名,Sclass 班级,SChinese 语⽂,SMath 数学,SEnglish 英语,SChinese+SMath+SEnglish 总分,31 (SChinese+SMath+SEnglish)/3 平均分 from Score order by SChinese+SMath+SEnglish desc";32 SqlDataAdapter adapter = new SqlDataAdapter(sql, dbhelper.Connection);33 adapter.Fill(ds, "Score");34this.dgv.DataSource = this.ds.Tables["Score"];35 }36catch (Exception)37 {3839 MessageBox.Show("数据库操作错误", "系统提⽰", MessageBoxButtons.OK, rmation);40 }41 }4243//退出按钮被点击44private void tsbtnExit_Click(object sender, EventArgs e)45 {46this.Close();47 }48//窗体加载事件49private void Form1_Load(object sender, EventArgs e)50 {51 GetDB();52 }53//添加按钮被点击54private void tsbtnIn_Click(object sender, EventArgs e)55 {56 Edit ed = new Edit();57 ed.ShowDialog();58 GetDB();59 }60//修改按钮被点击61private void tsbtnUpdate_Click(object sender, EventArgs e)62 {63 Edit ed = new Edit();64 ed.Sno = Convert.ToInt32(this.dgv.SelectedCells[0].Value);65 ed.ShowDialog();66 GetDB();67 }68//删除按钮被点击69private void tsbtnDelete_Click(object sender, EventArgs e)71 Delete();72 }73//删除⽅法74private void Delete()75 {7677if (this.dgv.CurrentRow != null)78 {79 DialogResult dr = MessageBox.Show("确定要删除:" + dgv.CurrentRow.Cells[1].Value + "相关成绩信息", "系统提⽰", MessageBoxButtons.OKCancel, rmation); 80if (dr == DialogResult.OK)81 {82 DBhelper helper = new DBhelper();83try84 {85//sql语句86 StringBuilder sb = new StringBuilder();87 sb.AppendFormat("delete from Score where Sno={0}", Convert.ToInt32(dgv.CurrentRow.Cells[0].Value));88//执⾏⼯具89 SqlCommand cmd = new SqlCommand(sb.ToString(), helper.Connection);90//打开数据库连接91 helper.OpenConnection();92//执⾏93int result = cmd.ExecuteNonQuery();94if (result == 1)95 {96 MessageBox.Show("删除成功", "系统提⽰", MessageBoxButtons.OK, rmation);97//重新绑定dgv98this.GetDB();99 }100 }101catch (Exception)102 {103104 MessageBox.Show("数据库操作失败", "系统提⽰", MessageBoxButtons.OK, rmation);105 }106finally107 {108 helper.CloseConnection();109 }110 }111 }112113 }114//查询按钮被点击115private void toolStripButton1_Click(object sender, EventArgs e)116 {117this.Search();118 } //查询⽅法119private void Search()120 {121 ds = new DataSet();122 DBhelper dbHelper = new DBhelper();123try124 {125string strSql = @"Select Sno 学号,Sname 姓名,Sclass 班级,SChinese 语⽂,SMath 数学,SEnglish 英语,SChinese+SMath+SEnglish 总分,126 (SChinese+SMath+SEnglish)/3 平均分 from Score127 where 1=1";128if (toolStripTextBox1.Text.Trim() != null && toolStripTextBox1.Text.Trim().Length > 0)129 {130 strSql += " and Sname like '%" + toolStripTextBox1.Text.Trim() + "%'";131 }132if (toolStripTextBox2.Text.Trim() != null && toolStripTextBox2.Text.Trim().Length > 0)133 {134 strSql += " and Sclass like '%" + toolStripTextBox2.Text.Trim() + "%'";135 }136 strSql += "order by SChinese+SMath+SEnglish desc";137 SqlDataAdapter adapter = new SqlDataAdapter(strSql, dbHelper.Connection);138 adapter.Fill(ds, "score");139this.dgv.DataSource = this.ds.Tables["score"];140 }141catch (Exception)142 {143 MessageBox.Show("数据库操作错误!", "系统提⽰", MessageBoxButtons.OK, rmation);144 }145 }146147148 }149 }Form11using System;2using System.Collections.Generic;3using ponentModel;4using System.Data;5using System.Data.SqlClient;6using System.Drawing;7using System.Linq;8using System.Text;9using System.Threading.Tasks;10using System.Windows.Forms;1112namespace zengshangaicha13 {14public partial class Edit : Form15 {16public int Sno = -1;17 DataSet ds = new DataSet();18public Edit()19 {20 InitializeComponent();21 }22//窗体加载23private void Edit_Load(object sender, EventArgs e)24 {25if (Sno == -1)//没有被选定的⾏数2728 }29else//修改30 {31 GetInfo();32this.btnSave.Text = "修改";33 }34 }35//保存按钮36private void btnSave_Click(object sender, EventArgs e)37 {38if (CheckItem())39 {40if (this.Sno == -1)//新增41 {42if (CheckSnoExit())43 {44 InsertDB();45 }46 }47else//更新48 {49 UpdateScore();50 }51 }52 }53//⾮空验证54private bool CheckItem()55 {56bool checkValue = true;57if (this.textBox1.Text.Trim().Length == 0)58 {59 MessageBox.Show("学号不能为空", "系统提⽰", MessageBoxButtons.OK, rmation);60 checkValue = false;61this.textBox1.Text = "";62 }63return checkValue;64 }65//增加⽅法66//查重67private bool CheckSnoExit()68 {69bool exit = true;70 DBhelper dbhelper = new DBhelper();71try72 {73 StringBuilder sb = new StringBuilder();74 sb.AppendFormat("select * from Score where Sno='{0}'", textBox1.Text.Trim());75 SqlCommand cmd = new SqlCommand(sb.ToString(), dbhelper.Connection);76 dbhelper.OpenConnection();77 SqlDataReader reader = cmd.ExecuteReader();78if (reader.Read())79 {80 MessageBox.Show("该学号已存在", "系统提⽰", MessageBoxButtons.OK, rmation);81 exit = false;82 }83 reader.Close();84 }85catch (Exception)86 {87 MessageBox.Show("数据库操作错误", "系统提⽰", MessageBoxButtons.OK, rmation);88 }89finally90 {91 dbhelper.CloseConnection();92 }93return exit;94 }95//执⾏增加96private void InsertDB()97 {98 DBhelper helper = new DBhelper();99try100 {101//SQL语句102 StringBuilder sb = new StringBuilder();103 sb.AppendLine("insert into Score");104 sb.AppendFormat("values('{0}','{1}','{2}','{3}','{4}','{5}')", textBox1.Text.Trim(), textBox2.Text.Trim(), comboBox1.Text.Trim(), textBox4.Text.Trim(), textBox5.Text.Trim(), textBox6.Text.Trim()); 105//执⾏⼯具106 SqlCommand cmd = new SqlCommand(sb.ToString(), helper.Connection);107//打开连接108 helper.OpenConnection();109//执⾏110int result = cmd.ExecuteNonQuery();111if (result > 0)112 {113 MessageBox.Show("添加成功", "系统提⽰", MessageBoxButtons.OK, rmation);114this.Close();115 }116 }117catch (Exception)118 {119 MessageBox.Show("添加数据库操作错误", "系统提⽰", MessageBoxButtons.OK, rmation);120 }121finally122 {123 helper.CloseConnection();124 }125 }126127//通过ID查找类别128private void GetInfo()129 {130 DBhelper dbhelper = new DBhelper();131try132 {133//SQL语句136 sb.AppendLine("from Score");137 sb.AppendFormat("where Sno={0}", Sno);138//执⾏⼯具139 SqlCommand cmd = new SqlCommand(sb.ToString(), dbhelper.Connection);140//打开连接141 dbhelper.OpenConnection();142//执⾏143 SqlDataReader reader = cmd.ExecuteReader();144if (reader.Read())145 {146 textBox1.Text = reader["Sno"].ToString();147 textBox2.Text = reader["Sname"].ToString();148 comboBox1.Text = reader["Sclass"].ToString();149 textBox4.Text = reader["SChinese"].ToString();150 textBox5.Text = reader["SMath"].ToString();151 textBox6.Text = reader["SEnglish"].ToString();152 }153 reader.Close();154 }155catch (Exception)156 {157 MessageBox.Show("操作错误", "系统提⽰", MessageBoxButtons.OK, rmation);158 }159finally160 {161 dbhelper.CloseConnection();162 }163164 }165//修改166private void UpdateScore()167 {168 DBhelper helper = new DBhelper();169try170 {171 StringBuilder sql = new StringBuilder();172//修改数据库语句173 sql.AppendLine("update Score");174 sql.AppendFormat("set Sname='{0}',Sclass='{1}',SChinese='{2}',SMath='{3}',SEnglish='{4}'", textBox2.Text.Trim(), comboBox1.Text.Trim(), textBox4.Text.Trim(), textBox5.Text.Trim(), textBox6.Text.Trim()); 175 sql.AppendFormat("where Sno={0}", Sno);176//执⾏⼯具177 SqlCommand cmd = new SqlCommand(sql.ToString(), helper.Connection);178//打开数据库连接179 helper.OpenConnection();180//执⾏181int result = cmd.ExecuteNonQuery();182//判断183if (result == 1)184 {185186 MessageBox.Show("修改成功", "系统提⽰", MessageBoxButtons.OK, rmation);187this.Close();188 }189else190 {191192 MessageBox.Show("修改失败", "系统提⽰", MessageBoxButtons.OK, rmation);193 }194 }195catch (Exception)196 {197198 MessageBox.Show("修改数据库操作错误", "系统提⽰", MessageBoxButtons.OK, rmation);199 }200finally201 {202 helper.CloseConnection();203 }204205 }206//取消按钮207private void button2_Click(object sender, EventArgs e)208 {209this.Close();210 }211212213 }214 }EditView Code1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using System.Data;7using System.Data.SqlClient;8using System.Windows.Forms;910namespace zengshangaicha11 {12class DBhelper13 {1415private string connString = "server=.;database=student1;user=sa;pwd=000000;";//连接数据库⾃⼰的⽤户名密码16private SqlConnection connection;1718public SqlConnection Connection19 {20get21 {22if (connection == null)23 {26 }27return connection;28 }2930 }31//打开数据库连接32public void OpenConnection()33 {34if (Connection.State == ConnectionState.Closed)35 {3637 Connection.Open();38 }39else if (Connection.State == ConnectionState.Broken)40 {41 Connection.Close();42 Connection.Open();43 }44 }45//关闭数据库46public void CloseConnection()47 {48if (Connection.State == ConnectionState.Open || Connection.State == ConnectionState.Broken)49 {50 Connection.Close();51 }52 }53 }54 }DBhelper4.在复制代码的时候,需要注意的是,在下⾯这张图⾥⾯的点击事件是不会⾃动添加的,需要⾃⼰⼿动写⼀下,具体格式如第⼆张图所⽰。
C++MySQL连接及增删改查操作⼀、使⽤准备环境:CentOS 7.6和Ubuntu 16.04,MySQL 5.7C++ MySQL连接相关库下载下载地址:有两种选择,C API和Connector/C++,貌似C API简单⼀点,Connector/C++⽐较规范,和Java JDBC接⼝⼀致。
这⾥选择C API翻译⼀下:C API(libmysqlclient)是⽤于C开发的客户端库:对于C语⾔和SQL: - 适⽤于MySQL 8.0、5.7、5.6、5.5 - 我们建议使⽤MySQL 8.0 C APIC API(libmysqlclient)包含在MySQL 8.0中(其他版本也可以在其安装⽂件夹中找到,通过某些特殊⼿段安装的可能就没有)Linux:可从下载页⾯获得Client Utilities PackageRepos: 可以从 , , 仓库获得Client Utilities PackageWindows:可从Windows Installer获得Client Utilities Package以前的GA版本可从中获得在线⽂档地址:翻到查看其使⽤说明:该⽂档说明了如何。
请仔细阅读,⽐如使⽤gcc编译器,注意:以下部分均复制⾃官⽅⽂档,为求准确,建议浏览1、引⽤头⽂件:编译使⽤MySQL头⽂件的客户端程序时,可能需要指定-I选项,以便编译器可以找到它们。
例如,如果头⽂件安装在 /usr /local/mysql/include 中,请在compile命令中使⽤以下选项:2、链接库⽂件您可以将代码与动态或静态MySQL C客户端库链接。
动态库的基本名称为libmysqlclient,后缀因平台⽽异(例如,对于Linux为.so,对于macOS为.dylib)。
在所有平台上,静态库均名为libmysqlclient.a。
必须使⽤link命令中的-lmysqlclient选项链接MySQL客户端。
以users表为例,有三个字段,自增长的编号id,int类型;名称name,nvarchar 类型,密码pwd,nvarchar类型
首先在vs2005中引入using System.Data.SqlClient;命名空间
/// <summary>
/// 增加
/// </summary>
/// <param name="name">姓名</param>
/// <param name="pwd">密码</param>
/// <returns></returns>
public int Insert(string name,string pwd)
{
SqlConnection conn = new SqlConnection(@"Data
Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated
Security=True");//Initial Catalog后面跟你数据库的名字,如果你的SqlServer服务器名称后面不带SQLEXPRESS,那么Data Source=.
conn.Open();
string sql = "insert into users(name,pwd)
values(@name,@pwd)";
SqlCommand cmd = new SqlCommand(sql,conn);
SqlParameter parn = new SqlParameter("@name",name);
cmd.Parameters.Add(parn);
SqlParameter parp = new SqlParameter("@pwd", pwd);
cmd.Parameters.Add(parn);
int result = cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示添加成功
conn.Close();
cmd.Dispose();
return result;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="name">姓名</param>
/// <param name="pwd">密码</param>
/// <returns></returns>
public int Update(int id)
{
SqlConnection conn = new SqlConnection(@"Data
Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated
Security=True");//Initial Catalog后面跟你数据库的名字,如果你的SqlServer服务器名称后面不带SQLEXPRESS,那么Data Source=.
conn.Open();
string sql = "delete from users where id=@id";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter parn = new SqlParameter("@id", id);
cmd.Parameters.Add(parn);
int result = cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示删除成功
conn.Close();
cmd.Dispose();
return result;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="name">姓名</param>
/// <param name="pwd">密码</param>
/// <returns></returns>
public int Insert(string name, string pwd,int id)
{
SqlConnection conn = new SqlConnection(@"Data
Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated
Security=True");//Initial Catalog后面跟你数据库的名字,如果你的SqlServer服务器名称后面不带SQLEXPRESS,那么Data Source=.
conn.Open();
string sql = "update users set name=@name,pwd=@pwd where id=@id";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter parn = new SqlParameter("@name", name);
cmd.Parameters.Add(parn);
SqlParameter parp = new SqlParameter("@pwd", pwd);
cmd.Parameters.Add(parn);
SqlParameter pari = new SqlParameter("@id", id);
cmd.Parameters.Add(pari);
int result = cmd.ExecuteNonQuery();//result接收受影响行数,也就是说result大于0的话表示修改成功
conn.Close();
cmd.Dispose();
return result;
}
/// <summary>
/// 查询
/// </summary>
/// <returns></returns>
public DataTable Select()
{
SqlConnection conn = new SqlConnection(@"Data
Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated
Security=True");//Initial Catalog后面跟你数据库的名字,如果你的SqlServer服务器名称后面不带SQLEXPRESS,那么Data Source=.
conn.Open();
string sql = "select * from users";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
cmd.Dispose();
return dt;
}
方法写好后,下面举一个查询的例子,在form窗体中拖一个DataGridView,然后在Load方法中
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = Select();
}
这样一运行,DataGridView中就会显示数据了。