从C#中链接到SQL Server数据库,再经过C#编程实现SQL数据库的增删改查。sql
ado.net提供了丰富的数据库操做,这些操做能够分为三个步骤:数据库
1.打开链接通道:编程
#region 打开链接通道 /// <summary> ///1.链接通道的链接字符串 ///2.链接通道对象 ///3.打开通道 ///4.关闭通道 /// </summary> public static void OpenConnection() { //1.链接通道的链接字符串 string conStr = "server=192.168.1.100;database=JNU;uid=sa;pwd=123456aa;";//指定哪台服务器 //2.链接通道对象 SqlConnection conn = new SqlConnection(conStr); //3.打开通道 conn.Open(); //4.关闭通道 conn.Close(); Console.WriteLine("链接对象新建操做成功"); } #endregion
2.增长记录数组
#region 增长记录 /// <summary> /// 增长记录 /// </summary> public static void AddRecord() { int res = -1;//准备比接受新增受影响的行数 string conStr = "server=192.168.1.100;database=JNU;uid=sa;pwd=123456aa;"; //1.新建链接通道 SqlConnection conn = new SqlConnection(); //2.手动指定链接字符串 conn.ConnectionString = conStr; //3.准备新增的sql命令 string sqlStr = "insert into TEST(NAME) values('SHUAI')"; //4.新建命令对象,而且告诉他走那条路(conn),作什么事('sqlStr')单引号必定要加 SqlCommand cmd = new SqlCommand(sqlStr, conn); //5.打开链接通道 conn.Open(); //6.调用方法去数据库执行sql语句 res = cmd.ExecuteNonQuery();//此方法负责增删改,返回受影响的行数(int),开始进入数据库进行操做 //7.关闭链接通道 conn.Close(); if (res > 0) { Console.WriteLine("新增成功"); } else { Console.WriteLine("新增失败"); } } #endregion
3.删除记录和更改记录(软删除)与新增记录的代码相同,只有SQL语句不同,其SQL语句为服务器
//3.准备删除的sql命令 string sqlStr = "delete from TEST where ID=8"; //3.准备修改的sql命令 string sqlStr = "update TEST set NAME='qiang' where ID=7";
4.查询单个值时,使用的是命令对象SqlCommand进行查询ui
#region 查询单个值 /// <summary> /// 查询单个值 /// </summary> public static void QuerySingle() { SqlConnection conn = new SqlConnection(conStr); // string sqlStr = "select count(*) from TEST"; string sqlStr = "select * from TEST"; SqlCommand cmd = new SqlCommand(sqlStr, conn); conn.Open(); //调用此方法,得到查询语句在数据库执行后获得的结果集的第一个单元格的值,返回类型为object object obj = cmd.ExecuteScalar(); conn.Close(); Console.WriteLine(obj.ToString()); } #endregion
5.读取器查询多行数据,逐行读取,经过下标访问数据,还能够经过列名和get方法访问数据spa
#region 读取器查询多行数据,逐行读取,经过get方法访问数据 /// <summary> /// 查询多行数据——DataReader,逐行读取 /// </summary> public static void QueryListByGet() { SqlConnection conn = new SqlConnection(conStr); string sqlStr = "select * from TEST"; SqlCommand cmd = new SqlCommand(sqlStr, conn); conn.Open(); //调用此方法,得到一个读取器对象,SqlDataReader不能实例化 SqlDataReader dr = cmd.ExecuteReader(); //if (dr.HasRows)//判断有无数据 //{ // Console.WriteLine("有数据"); //} //else //{ // Console.WriteLine("无数据"); //} if (dr.HasRows) { //每调用一次read,读取一行数据 while (dr.Read())//read方法,若是读到下一行数据,则返回true,并且dr自己就等于哪一行数据 { //读取第一列的数据 //Console.WriteLine(dr[0].ToString());//经过下标访问数据,数组下标从0开始 //Console.WriteLine(dr["ID"].ToString());//经过列名访问数据,以结果集的列名做为标志,能够避免as为别名后的查询错误 Console.WriteLine(dr.GetString(1));//经过get访问数据,数组下标从0开始,只能用于char类型的变量,不能获取int类型的数据 Console.WriteLine(dr.GetInt32(0));//只能获取int类型 Console.WriteLine(dr.GetValue(0).ToString());//以object的方式拿出数据 dr.GetOrdinal("ID");//传入列名,得到列的下标 } } else Console.WriteLine("无数据"); //先关闭读取器,再关闭链接通道 dr.Close(); conn.Close(); } #endregion
6.适配器查询多行数据.net
#region 适配器查询多行数据 /// <summary> /// 使用适配器读取数据,不须要代码手动打开、关闭链接通道 /// </summary> public static void QueryListByAdapter() { SqlConnection conn = new SqlConnection(conStr); string sqlStr = "select * from TEST"; //建立适配器对象(SqlDataAdapter),告诉他作什么事(sqlStr),走哪条路(conn) SqlDataAdapter sqlda = new SqlDataAdapter(sqlStr, conn); //建立数据集对象(程序端的临时数据库) DataSet ds = new DataSet(); //调用fill方法,添加数据到数据集。(先去数据库查询结果集,并把结果集返回赋值给数据集) sqlda.Fill(ds);//开始进入数据库进行操做 DataTable dt = ds.Tables[0];//得到数据集中的第一张表(数据集能够存放多张表) for (int i = 0; i < dt.Rows.Count; i++)//循环该表中的每一行,dt.Rows为获取该数据表的行集合 { DataRow dr = dt.Rows[i];//dr对象获取表中的当前行 Console.WriteLine(dr[0].ToString());//经过索引的方式读某一列的值 Console.WriteLine(dr["ID".ToString()]);//经过列名的方式读列 } } #endregion
2018.08.12code