ADO.NET的主要对象
ADO.NET主要分为五个对象:
1)Connection对象:用来连接程序与数据库。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close之后还可以用Open打开数据库,Dispose是释放资源,Dispose之后将不能再用Open。
2)Command对象:主要迎来对数据库发出一些指令,例如增删改查等指令,另外也可以调用数据库中的存储过程,这个对象时架构在Connection对象上,也就是Command对象是透过Connection连接到数据源。
3)DataAdapter:主要用在数据源以及DataSet之间执行数据传输的工作,可以通过Command对象下达命令之后,将取得的数据放入DataSet中,这个对象是架构在Command对象上,并提供了许多配合DataSetshiyong 的功能。
4)DataSet:这个对象可是看作是一个暂存区(暂时存储区域),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是存放在内存中的,DataSet不仅可以存储多个Table,还可以通过DataAdapter对象取得一些例如主键的呢过的数据表结构,并可以记录数据表之间的关联。DataSet对象可以说是ADO.NET中的重量级对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力,也就是说,我们是将DataAdapter对象当做是DataSet与数据源DB之间的桥梁 ,DataSet中包含若干DataTable,DataTable中包含若干DataRow。
5)DataReader:当我们只需要循环的读取数据而不需要其他的操作的时候,可以使用DataReader对象。DataReader对象只是一次一条向下循环的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能读取到当前行的数据,而且这些数据只是只读的,并不允许其他操作。因为DataReader在读取数据的时候限制了一次一条的读取,而且只能只读,所以使用起来不但节省资源而且效率很好,使用DataReader对象除了效率好之外,因为不用把数据全部传回,因此可以降低网络的负载。
总结:ADO.NET使用Connection对象来连接数据库,使用Command对象或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader或者DataAdapter,然后在使用取得的DataReader或者DataAdapter对象操作数据结果。
以下是常用的sqlHelper.cs(部分功能实现):
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient; namespace WebApplication1.WebHelper
{
public static class SqlHelper
{
//取得连接字符串
public static readonly string connString = ConfigurationManager.ConnectionStrings["defaultConnString"].ConnectionString;
//sql操作过程:打开连接-->创建命令-->给sql语句-->执行语句-->处理结果
public static int ExecuteNonQuery(string sql)
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
//返回执行sql语句影响的行数
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string sql)
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteScalar();
}
}
} //只用来执行查询结果比较少的sql
public static DataSet ExecuteDataSet(string sql)
{
//方法1
//using (SqlConnection conn = new SqlConnection(connString))
//{
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet ds = new DataSet();
// adapter.Fill(ds);
// return ds;
// }
//} //方法2
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd,conn,sql);
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
} ;
} } public static void PrepareCommand(SqlCommand cmd,SqlConnection conn, string sql)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.Connection = conn;
cmd.CommandText = sql;
}
}
}
sqlhelper.cs
ADO.NET的主要对象的更多相关文章
- C# ADO.NET的SqlDataReader对象,判断是否包含指定字段
在使用ado.net的SqlDataReader对象时,如果SqlDataReader实例对象中没有对应的字段,则会在那一行报错.而SqlDataReader类又没有判断是否存在指定字段的方法,怎么办 ...
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- ADO.NET中主要对象
ADO.NET是什么? ADO.NET是.Net平台提供和数据库交互的类库集,我们可以通过它对SQLSERVER,XML,Oracle等这样的数据源进行访问. 应用程序可以使用ADO.NET链接到数据 ...
- 温故而后知新——对ado.net中常用对象的一些解释
在使用ado.net连接数据库获取数据,一般的步骤是: 1.设置好web.config //用来设置服务器数据库的地址以及登录名密码 2.创建Connection对象 //用来创建访问数据 ...
- ADO.NET中COMMAND对象的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法
1.ExecuteNonQuery方法.该方法执行更新操作,即与UPDATE.INSERT.DELETE等语句有关的操作,在这种情况下,返回值是命令影响的行数.对其他语句,如SET或CREATE,则返 ...
- ADO.NET的五大对象【转】
ADO.NET是一组用于和数据源进行交换的面向对象类库.通常情况下,数据源是数据库,也可以是文本文件.Excel表或XML文件.ADO.NET的主要类对象有Connection.Command.Dat ...
- ADO.NET的五大对象
ADO.NET是一种数据访问技术,使得应用程序可以连接到数据库存储,并以各种方式操作存储在其中的数据.该技术基于.NETFramework,与.NET Framework类库的其余部分高度集成. 其中 ...
- ADO.NET中的五个主要对象
Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的.Close和Dispose的区别,Close以后还可以Open,Dispose以后则不 ...
- 【转】ADO.NET中的五个主要对象
Connection 物件 Connection 对象主要是开启程序和数据库之间的连结.没有利用连结对象将数据库打开,是无法从数据库中取得数据的.这个物件在ADO.NET 的最底层,我们可以自己 ...
随机推荐
- A. Theatre Square(math)
A. Theatre Square time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- P3613 睡觉困难综合征 LCT+贪心+位运算
\(\color{#0066ff}{ 题目描述 }\) 由乃这个问题越想越迷糊,已经达到了废寝忘食的地步.结果她发现--晚上睡不着了!只能把自己的一个神经元(我们可以抽象成一个树形结构)拿出来,交给D ...
- [BZOJ4916]神犇和蒟蒻 杜教筛/Min_25筛
题目大意: 给定\(n\le 10^9\),求: 1.\(\sum_{i=1}^n\mu(i^2)\) 2.\(\sum_{i=1}^n\varphi(i^2)\) 解释 1.\(\sum_{i=1} ...
- IOS 浏览器上设置overflow: auto 不可滚动
项目中最近遇到一个bug,在ios上出现的问题:原页面是在某一块地方滚动,但是改版后,滚动区域改为最外层元素,最外层包裹了一层class为main的div .main { position: fixe ...
- win10全半角切换
shift+sapce shift+sapce:全半角切换快捷键,编程的时候发现英文是这种状态,就需要用快捷键切换成半角. (查过老是忘记,在这里写一下记住它)
- 【模板】缩点 tarjan+dp
题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...
- angularJs条件查询:
首先需要建立一个输入框进行数据绑定: <div class="box-tools pull-right"> <div class="has-feedba ...
- Gradle 引入本地定制 jar 包
第 1 步:创建文件夹,拷贝 jar 包 在自己的 Gradle 项目里建立一个名为 “libs” (这个名字可以自己定义,不一定非要叫这个名字)的文件夹,把自己本地的 jar 包拷贝到这个文件夹中. ...
- hdu1698 线段树(区间更新~将区间[x,y]的值替换为z)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- restframework 的一些操作
路飞学城项目: 1 Vue 2 restframework框架(一周) 3 学城项目(一周-两周) day98 1 CBV(class based view) 与 FBV(function based ...