前言: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:

 using System;
using System.Data;
using System.Data.SqlClient; namespace SqlHelper
{
public class SqlHelper
{
//定义一个字符串变量,把数据库连接字符串赋值给它,也可以把连接字符串添加到配置文件,这样项目也可以方便访问,这里是为了清楚直接复值到字符串变量
private static string connstr =
"Data Source=127.0.0.1\\SQL2008; Initial Catalog=Test; User ID=test; Password=test"; //执行查询语句并返回一个内存中的数据表
public DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr)) //连接到数据库
{
conn.Open(); //打开数据库连接
using (SqlCommand cmd = conn.CreateCommand()) //创建执行对象
{
cmd.CommandText = sql; //给cmd赋值sql语句
cmd.Parameters.AddRange(parameters); //把sql语句参数添加到cmd
DataSet dataSet = new DataSet(); //创建DataSet对象,用于保存查询结果 SqlDataAdapter adapter = new SqlDataAdapter(cmd); //执行cmd,更新数据结果到adapter对象
adapter.Fill(dataSet); //把结果添加到DataSet对象中 return dataSet.Tables[]; //返回一个查询结果的一个表
}
}
} //执行查询语句返回结果集合的第一行第一列
public Object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar(); //执行查询,返回查询结果的第一行的第一列
}
}
} //执行参数化SQL语句,返回受影响的行数
public int ExecuteNoneQuery(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery(); //执行数据库语句并返回受影响的行数
}
}
}
}
}

  3.老师现场写代码,涉及到了很多知识点,得好好消化一下了。

后记:多多练习。

ASP.NET动态网站制作(24)-- ADO.NET(3)的更多相关文章

  1. ASP.NET动态网站制作(3)--css(2)

    前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今 ...

  2. ASP.NET动态网站制作(22)-- ADO.NET(1)

    前言:这节课开始真正地学习WEB开发,ADO.NET就是一组允许.NET开发人员使用标准的.机构化的,甚至无连接的方式与数据交互的技术.所属的类库为:System.Data.dll. 内容: 1.AD ...

  3. ASP.NET动态网站制作(23)-- ADO.NET(2)

    前言:这节课老师请高级班的E老师过来代课,还是接着老师讲的内容继续深入,修改了上节课老师写的部分代码. 内容: 1.数据库本质就是一个软件,这个软件帮助我们把数据有序地存储起来,当我们需要数据的时候帮 ...

  4. ASP.NET动态网站制作(25)-- ADO.NET(4)

    前言:这节课老师主要讲网页当中内容的分页效果,自己写一个分页控件. 内容: 1.首先写出HTML代码: <div id="pager"> <%=GetPagerH ...

  5. ASP.NET动态网站制作(26)-- Ajax

    前言:这节课讲解关于Ajax的相关内容. 内容: 1.当点击页面中的一个按钮提交数据或请求数据的时候,整个页面的信息都会提交(不管信息是否是提交或者请求的数据,页面中所有的数据都提交),这样耗用的时间 ...

  6. ASP.NET动态网站制作(20)-- C#(3)

    前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解. 内容: 1.StringBuilder类:由于string类一旦创建,则不能更改.如果做字符串拼凑的话,将会非常耗费空间,如: str ...

  7. ASP.NET动态网站制作(1)--html

    前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...

  8. ASP.NET动态网站制作(0)

    前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...

  9. ASP.NET动态网站制作(28)-- 三层框架(2)

    前言:三层框架的第二节课,继续上次课的内容. 内容: 1.三层框架的使用目的:可以将视图层和业务逻辑层及实体层分开,可以提高代码的扩展性,安全性,可以实现程序的低耦合性. 2.GetModel方法及G ...

随机推荐

  1. 表格中的IE BUG

    在表格应用了跨列单元格后,在IE6/7下当跨列单元格中的元素长度超过其跨列单元格中第一个单元格的宽度时会产生换行,如下所示: 解决方法: 1. 设置 table 的 'table-layout' 特性 ...

  2. Java实现算法之--选择排序

    选择排序也是比較简单的一种排序方法,原理也比較easy理解,它与冒泡排序的比較次数同样,但选择排序的交换次数少于冒泡排序.冒泡排序是在每次比較之后,若比較的两个元素顺序与待排序顺序相反,则要进行交换, ...

  3. 病毒木马查杀实战第022篇:txt病毒研究

    前言 反病毒爱好者们非常喜欢讨论的一个问题就是,现在什么样的病毒才算得上是主流,或者说什么样的病毒才是厉害的病毒呢?我们之前的课程所解说的都是Ring3层的病毒.所以有些朋友可能会觉得.那么Ring0 ...

  4. Git——使用gitignore建立项目过滤规则

    在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push ...

  5. js 值和类型

    js中变量是没有类型的,只有值才有类型. 变量随时可以持有任何类型的值. <!DOCTYPE html> <html lang="zh"> <head ...

  6. Python 的基本运算和内置函数

    一.运算符 (一)Python算术运算符 以下假设变量: a=10,b=20: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a ...

  7. 【SpringMVC学习02】走进SpringMVC的世界

    上一篇博文主要介绍了springmvc的整个架构执行流程,对springmvc有了宏观上的把握,这一篇博文主要以案例作为驱动,带你走进springmvc的世界.案例中的需求很简单:对商品列表的查询.表 ...

  8. Android Shape 详解

    1 http://blog.csdn.net/feng88724/article/details/6398193 2 <shape xmlns:android="http://sche ...

  9. WPF入门教程系列二

    WPF控件和布局 一.  前言  公司项目基于WPF开发,最近项目上线有点空闲时间写一篇基于wpf的基础教材,WPF也是近期才接触,学习WPF也是在网上查资料与微软的MSDN进行学习,写本博客的目为了 ...

  10. 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等

    一.修改最大连接数 1.查看当前文件描述符的限制数目的命令: ulimit -n 2.修改文件描述符的限制数目 2.1 临时改变当前会话: ulimit -n 65536 2.2 永久变更需要下面两个 ...