• ASP.NET动态网站制作(24)-- ADO.NET(3)


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

    后记:多多练习。

  • 相关阅读:
    repeater 相关问题
    发布网站的步骤
    HTTP 错误 500.19- Internal Server Error 错误解决方法
    没有body怎么添加onload事件
    js 一搬问题汇总
    取值为四舍五入方法实现
    有关网站中操作数据库的几种方法的使用情况
    正式开始使用window live write 来更新使用博客园
    设置Oracle PL/SQL 时间显示格式 NLS_TIMESTAMP_FORMAT 2008-01-27 00:04:35:877000
    JSP 显示服务器上的文件/图片
  • 原文地址:https://www.cnblogs.com/zoe-yan/p/4936012.html
Copyright © 2020-2023  润新知