ASP.NET动态网站制作,24-- ADO.NET

前言: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 ;
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.老师现场写代码,涉及到了很多知识点,得好好消化一下了。

后记:多多练习。