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 的最底层,我们可以自己 ...
随机推荐
- Ubuntu - 安装hadoop(简约版)
相关版本: VMware ubuntuKylin16.04 JDK :openjdk Hadoop-2.9.1 步骤: 1.SSH 配置 [ 远程登陆 ] [ 配置SSH免码登陆 ] *测试:ssh ...
- MariaDB之SQL语句基础
数据库组件: 数据库:database 表: table 索引:index 视图:view 用户:user 权限:privileges 存储过程:procedure 存储函数:function 触发器 ...
- MySQL Index Condition Pushdown 原理与解析
Index Condition Pushdown(ICP)是针对mysql使用索引从表中检索行数据时的一种优化方法. 原理: 在没有ICP特性之前,存储引擎根据索引去基表查找并将数据返回给mysq ...
- Unity---Directory目录的删除、存在、创建操作
使用Directory类要引入命名空间 using System.IO; Directory类下的三个静态方法. public static void CreateDirectory(string ...
- react 中文文档案例一 (倒计时)
1.函数试组件 import React from 'react'; import ReactDOM from 'react-dom'; function Clock(props){ return( ...
- POJ1113 Wall
题目来源:http://poj.org/problem?id=1113题目大意: 如图所示,给定N个顶点构成的一个多边形和一个距离值L.建立一个围墙,把这个多边形完全包含在内,且围墙距离多边形任一点的 ...
- POJ1053 Set Me
题目来源:http://poj.org/problem?id=1053 题目大意: 有一种牌,共有81张.每张牌有四个属性,每种属性有三种可能取值:形状(D,O,S),数字(1,2,3),颜色(R,G ...
- 【Ant】How to print all the system properties in Ant build file
在Ant里可以使用echoproperties task来达到目的 <target name="run"> <echoproperties /> </ ...
- UVA11082 行列模型
行列二分图模型,行指向列即表示权重w[i][j] 避免零流的方法就是使下界为1 #include<bits/stdc++.h> #define rep(i,j,k) for(int i = ...
- LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版
前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡 ...