C_连接sql数据库执行简单的增删改查操作
C#访问SQLServer增删改查代码实例

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数据库的增删改查项目案例

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#代码)

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数据库之对数据库进行增删改查

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--增删改的操作

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增删查改

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数据库基本操作(增、删、改、查)

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数据库⽅法⼩结(创建,连接,插⼊,查询,删除等)本⽂实例讲述了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#程序设计有所帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以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中就会显示数据了。