前言:ADO.NET的第三节课。今天主要讲SQL Helper。
内容:
1.DataReader和DataSet的区别:
(1)DataReader是一行一行地读,且只能向前读;DataSet是一次性读取出来放到内存中,所以,DataReader读取速度更快,占用内存更低。
(2)DataReader需要一直和数据库保持连接,DataSet读取完后即和数据库断开。
(3)DataSet里面可以存储多个结果集(DataTable)。
(4)DataSet可以对数据进行缓存,而DataTable不行。
做大型网站的时候需要涉及到缓存技术。
2.SQL Helper是一个基于.NET Framework的数据库操作组件,组件中包含数据库的操作方法,其用于简化重复地写数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SQL Helper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,变得方便了很多。
SqlHelper.cs:
1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 5 namespace SqlHelper 6 { 7 public class SqlHelper 8 { 9 //定义一个字符串变量,把数据库连接字符串赋值给它,也可以把连接字符串添加到配置文件,这样项目也可以方便访问,这里是为了清楚直接复值到字符串变量 10 private static string connstr = 11 "Data Source=127.0.0.1\SQL2008; Initial Catalog=Test; User ID=test; Password=test"; 12 13 //执行查询语句并返回一个内存中的数据表 14 public DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) 15 { 16 using (SqlConnection conn = new SqlConnection(connstr)) //连接到数据库 17 { 18 conn.Open(); //打开数据库连接 19 using (SqlCommand cmd = conn.CreateCommand()) //创建执行对象 20 { 21 cmd.CommandText = sql; //给cmd赋值sql语句 22 cmd.Parameters.AddRange(parameters); //把sql语句参数添加到cmd 23 DataSet dataSet = new DataSet(); //创建DataSet对象,用于保存查询结果 24 25 SqlDataAdapter adapter = new SqlDataAdapter(cmd); //执行cmd,更新数据结果到adapter对象 26 adapter.Fill(dataSet); //把结果添加到DataSet对象中 27 28 return dataSet.Tables[0]; //返回一个查询结果的一个表 29 } 30 } 31 } 32 33 //执行查询语句返回结果集合的第一行第一列 34 public Object ExecuteScalar(string sql, params SqlParameter[] parameters) 35 { 36 using (SqlConnection conn = new SqlConnection(connstr)) 37 { 38 conn.Open(); 39 using (SqlCommand cmd = conn.CreateCommand()) 40 { 41 cmd.CommandText = sql; 42 cmd.Parameters.AddRange(parameters); 43 return cmd.ExecuteScalar(); //执行查询,返回查询结果的第一行的第一列 44 } 45 } 46 } 47 48 //执行参数化SQL语句,返回受影响的行数 49 public int ExecuteNoneQuery(string sql, params SqlParameter[] parameters) 50 { 51 using (SqlConnection conn = new SqlConnection(connstr)) 52 { 53 conn.Open(); 54 using (SqlCommand cmd = conn.CreateCommand()) 55 { 56 cmd.CommandText = sql; 57 cmd.Parameters.AddRange(parameters); 58 return cmd.ExecuteNonQuery(); //执行数据库语句并返回受影响的行数 59 } 60 } 61 } 62 } 63 }
3.老师现场写代码,涉及到了很多知识点,得好好消化一下了。
后记:多多练习。