900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > ADO.NET复习总结(4)--访问SqlServer的类

ADO.NET复习总结(4)--访问SqlServer的类

时间:2022-02-10 14:13:56

相关推荐

ADO.NET复习总结(4)--访问SqlServer的类

1、连接SqlConnection

2、

3、执行命令SqlCommand

4、数据读取SqlDataReader

注意:

ExecuteNonQuery() :执行非查询(增删改)

ExecuteScalar(): 执行查询,获取单个值,返回单行单列

ExecuteReader() :执行查询,获取多个值,返回多行多列

示例代码:

1.插入语句测试 ExecuteNonQuery() 方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;namespace ConsoleApplication1{class Program{static void Main(string[] args){//1.连接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.创建连接对象using(SqlConnection conn=new SqlConnection (constr)){//3.SQL 语句string sql = "insert into test2 values('战狼') ";//4.创建SQLcommand对象using(SqlCommand cmd=new SqlCommand (sql,con)){//5.打开连接conn.Open();//6.执行int r = cmd.ExecuteNonQuery();Console.WriteLine("成功的插入了{0}行。", r);}}Console.ReadKey();}}}

View Code

2.查询,获取多个值 ExecuteReader()方法,返回类型datareader

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;namespace _02{class Program{static void Main(string[] args){//1.连接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.创建连接对象using (SqlConnection conn = new SqlConnection(constr)){//3.SQL 语句string sql = "select * from StudentInfo";//4.创建SQLcommand对象using (SqlCommand cmd = new SqlCommand(sql, conn)){//5.打开连接conn.Open();//6.执行//通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。//执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。//并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。using ( SqlDataReader reader = cmd.ExecuteReader()){//接下来就要通过reader对象一条一条获取数据//1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据if (reader.HasRows)//属性HasRows判断是否结果集中有行 {//2.有数据,那么接下来就要一条一条获取数据‘//每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSEwhile(reader.Read()){//获取当前reader指向的数据(一行多列)//reader.FieldCount,可以查询当前查询语句查询出列的个数。for (int i = 0; i < reader.FieldCount; i++){Console.Write(reader[i] + " | ");}Console.WriteLine();}}else{Console.WriteLine("没有任何数据");}}}}Console.ReadKey();}}}

View Code

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;namespace _02{class Program{static void Main(string[] args){//1.连接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.创建连接对象using (SqlConnection conn = new SqlConnection(constr)){//3.SQL 语句string sql = "select * from StudentInfo";//4.创建SQLcommand对象using (SqlCommand cmd = new SqlCommand(sql, conn)){//5.打开连接conn.Open();//6.执行//通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。//执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。//并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。using ( SqlDataReader reader = cmd.ExecuteReader()){//接下来就要通过reader对象一条一条获取数据//1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据if (reader.HasRows)//属性HasRows判断是否结果集中有行 {//2.有数据,那么接下来就要一条一条获取数据‘//每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSEwhile(reader.Read()){//获取当前reader指向的数据(一行多列)//reader.FieldCount,可以查询当前查询语句查询出列的个数。for (int i = 0; i < reader.FieldCount; i++){//但是通过reader【】索引器,可以使用列名获取列的值// Console.Write(reader[i] + " | ");Console.Write(reader["sid"] );//根据列名称获取列的索引//reader.Getordinal();//GetValue()只能通过列索引来获取列的值Console.Write(reader.GetValue(i) + " | ");}Console.WriteLine();}}else{Console.WriteLine("没有任何数据");}}}}Console.ReadKey();}}}

View Code

注意:

当遇到数据库中的null值的时候,通过Reader.GetValue()或者reader()索引器来获取列的值,

拿到的是DBNull.Value,不是C#的Null,而DBNull.Value的ToString()方法返回的空字符串,所以最终没有报错。

//大多数用下面这种方法//通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。reader.Getxxxxx()//使用强类型读取列中的数据

2、SqlDataReader

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;namespace _02{class Program{static void Main(string[] args){#region 版本1////1.连接字符串//string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";////2.创建连接对象//using (SqlConnection conn = new SqlConnection(constr))//{// //3.SQL 语句// string sql = "select * from StudentInfo";// //4.创建SQLcommand对象// using (SqlCommand cmd = new SqlCommand(sql, conn))// {// //5.打开连接// conn.Open();// //6.执行// //通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。// //执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。// //并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。// using (SqlDataReader reader = cmd.ExecuteReader())// {// //接下来就要通过reader对象一条一条获取数据// //1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据// if (reader.HasRows)//属性HasRows判断是否结果集中有行// {////2.有数据,那么接下来就要一条一条获取数据‘////每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE//while (reader.Read())//{////获取当前reader指向的数据(一行多列)////reader.FieldCount,可以查询当前查询语句查询出列的个数。//for (int i = 0; i < reader.FieldCount; i++)//{// //但是通过reader【】索引器,可以使用列名获取列的值// // Console.Write(reader[i] + " | ");// Console.Write(reader["sid"]);// //根据列名称获取列的索引// //reader.Getordinal();// //GetValue()只能通过列索引来获取列的值// // Console.Write(reader.GetValue(i) + " | ");// //大多数用下面这种方法// //通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。// // reader.Getxxxxx()//使用强类型读取列中的数据//}//Console.WriteLine();//}// }// else// {//Console.WriteLine("没有任何数据");// }// }// }//}#endregion#region 版本2string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";using (SqlConnection conn = new SqlConnection(constr)){string sql = "select * from StudentInfo";using (SqlCommand cmd = new SqlCommand(sql, conn)){conn.Open();using (SqlDataReader reader = cmd.ExecuteReader()){if (reader.HasRows){//注意通过reader.GetXxxx()方式来获取表中的数据,如果数据为null,那么久报异常了,此时需要手动写代码来判断数据是否为nullwhile (reader.Read()){//sId, sName, sGender, sBirthday, sPhone, sEMail, cid//打印每一列的值Console.Write(reader.GetInt32(0) + "\t||\t");Console.Write(reader.GetString(1) + "\t||\t");Console.Write(reader.GetBoolean(2) + "\t||\t");Console.Write(reader.GetDateTime(3) + "\t||\t");Console.Write(reader.IsDBNull(4)?"NULL":reader.GetString(4)+ "\t||\t");//Console.Write(reader.GetString(4) + "\t||\t");Console.Write(reader.GetString(5) + "\t||\t");Console.Write(reader.GetSqlInt32(6) + "\t||\t");}}}}#endregionConsole.ReadKey();}}}}

View Code

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。