ADO.NET 的五个对象
首先来一张关系图,了解大概关系。
知道了整个大关系之后,我们在具体看一下他们五个的分工:
1. SqlConnection
在访问数据时,我们首先必须要建立数据库的物理连接。·
2.SqlCommand
在建立数据连接之后,就可以通过sqlCommand执行数据访问操作和数据操纵操作了。对数据库的操作一般被概括为CRUD——Create、Read、Update和Delete。
3.SqlDataReader
当执行返回结果时,需要一个方法从结果中提取数据。处理结果集的方法有两个:一,使用SqlDataReader对象(数据阅读器);二,同时使用SqlDataAdapter对象(数据适配器)和DataSet对象。
DataReader 对象可以从数据库中得到只读的、只能向前的数据流。使用SqlDataReader对象还可以提高应用程序的性能,减少系统的开销。(同一时间只有一条行记录在内存中)
4.SqlDataAdapter
SqlDataAdapter对象(数据适配器)可以执行SQL命令以及调用存储过程、传递参数。最重要的是取得数据结果集,在数据库和DataSet对象之间来回传输数据。
5.DataSet
DataSet 这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataSetCommand 对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataSetCommand 对象当做DataSet 对象以及数据源间传输数据的桥梁。
详解五个对象
1.SqlConnection
属性:
❶ ConnectionString 获取或设置用于打开数据库的字符串;
在建立一个SqlConnection对象时必须要设置ConnectionString属性值,例如:“Data Source=数据库实例名;Initial Catalog=数据库名称;User ID=连接用户名;Password=密码”;
❷ConnectionTimeout:获取在尝试建立时终止尝试并生成错误之前所等待的时间。
❸Database:获取当前数据库或连接打开后要使用的数据库名称
❹State:获取连接当前状态
方法:
①Open::打开数据库连接;
②Close:关闭与数据库的连接
③ChageDatabase:为打开的SqlConnection更改当前数据库
常用连接方法:将连接字符串放在Web.config文件中
在Web.config文件中插入代码
<connectionString>
<add name="myconnstring" connectionString="Data Source= ;Initial Catalog= ; User ID= ;Password=;" providerName="System.Data.SqlClient"/>
</connectionString>
这样,以下代码自动获取Web.config文件中的连接字符串myconnstring并打开连接;
string mystr =System.Configuration.ConfigurationManager.ConnecttionStrings["myconnstring"].ToString();
using(SqlConnection myconn=new SqlConnection();) //使用using语句块,为了避免忘记使用Close方法关闭连接
{
myconn.ConnectionString=mystr;
myconn.Open();
}
2.SqlCommand
属性:
❶CommandText :获取或设置要对数据源执行的SQL语句或存储过程
❷CommandTimeout:获取或设置在终止执行命令的尝试并生成错误之前的等待时间
❸Paramenters: 参数集合
方法:
①CreateParameter:创j建SqlParameter对象的新实例 (command.CreateParameter (Name, Type, Direction, Size, Value)
②ExecuteNonQuery:针对Connection执行SQL语句并返回受影响的行数。
③ExecuteReader:将CommandText发送到Connection并生成一个SqlDataReader
④ExecutaScalar:执行查询,并返回查询所返回的结果集中第一行第一列,忽略其他结果
3.SqlDataReader
属性:
❶FieldCount 获取当前行中的列数
❷IsClosed 获取一个布尔值,指出SqlDataReader对象是否关闭
❸RecordsAffected 获取执行SQL语句时修改的行数
方法:
①Read:将SqlDataReader对象前进到下一行并读取,返回布尔值是否有多行
②Close: 关闭SqlDataReader对象
③IsDBNull:返回布尔值,表示列是否包含NULL值
⑴创建SqlDataReader对象
SqlCommand cmd=new SqlCommand(CommandText,ConnectionObject);
SqlDataReader myreader=cmd.ExecuteReader();
⑵遍历SqlDataReader对象的记录
while(myreader.Read())
{
//读取数据
}
4.SqlDataAdapter
属性:
❶SelectCommand 获取或设置SQL语句用于选择数据源中的记录
❷InsertCommand 获取或设置SQL语句用于将新纪录插入到数据源中
❸UpdateCommand 获取或设置SQL语句用于更新数据源中的记录
❹DeleteCommand 获取或设置SQL语句用于从数据集中删除记录
方法:
①Fill: 检索数据库中的数据,然后更新或创建数据集中的DataTable对象
②FillSchema:将DataTable添加到DataSet中,并配置架构以匹配数据源中的架构
③GetFillParameters :获取执行SELECT语句时由用户设置的参数
④Update:执行SQL语句,以使数据集中的数据来更新数据库
⑴创建SqlDataAdapter对象
有以下几种方法:
SqlDataAdapter mda= new SqlDataAdapter();
SqlDataAdapter mda= new SqlDataAdapter(selectCommandText);
SqlDataAdapter mda= new SqlDataAdapter(selectCommandText,selectConnection);
SqlDataAdapter mda= new SqlDataAdapter(selectCommandText,selectConnectionString);
⑵使用Fill方法
SqlDataAdapter对象名.Fill(Dataset对象名,"数据表名");
例:
SqlDataAdapter1.Fill(mydataset1,"course");
⑶使用Update方法
SqlDataAdapter 对象名.Updata(DataSet对象名,[数据表名]);
5.DataSet
属性:
❶Tables: 获取包含在DataSet中的表的集合
❷DataSetName:获取或设置当前DataSet的名称
方法:
①Clear 通过移除表中的所有行来清除任何数据的DataSet
②HasChanges 获取DataSet的副本,该副本包含自上次加载以来对该数据集进行的所有更改
③Reset 将DataSet重置为初始状态
⑴建立包含在数据集中的表
1.利用数据适配器的Fill方法自动建立DataSet中的DataTable对象
DataSet myds=new DataSet();
SqlDataAdapter myda=new SqlDataAdapter("SELECT * FROM course",myconn);
myda.Fill(myds,"course");
2.将建立的DataTable对象添加到DataSet中
DataSet myds=new DataSet();
DataTable mydt=new DataTable("course");
myds.Tables.Add(mydt);
textBox1.Text=my.Tables["course"].TableName;
通过DataSet对象创建一个表并显示添加的记录,来练习一下:
using System.Data;
protected void Button1_Click(object sender,EventArgs e)
{
DataSet myds=new Dataset();
DataTable mydt=new DataTable("course");
myds.Tables.Add(mydt);
mydt.Columns.Add("ID",Type.GetType("System.String")); //向表中添加String类型的列
mydt.Columns.Add("cName",Type.GetType("System.String"));
mydt.Columns.Add("cBook",Type.GetType("System.String"));
DataRow myrow1=mydt.NewRow(); // 向表中增加行
myrow1["ID"]="101";
myrow1["cName"]="c语言";
myrow1["cBook"]="c语言教程";
myds.Tables[0].Rows.Add(myrow1);
DataRow myrow2=mydt.newRow();
myrow2["ID"]="120";
myrow2["cName"]="数据结构";
myrow2["cBook"]="数据结构教程";
myds.Tables[0].Rows.Add(myrow2);
GridView1.DataSource=mydt; // 绑定数据源
GridView1.DataBind();
}
ADO.NET 的五个对象的更多相关文章
- ADO中最重要的对象有三个:Connection、Recordset和Command
ConnectionPtr: _ConnectionPtr m_pConnection; HRESULT hr; try{ hr = m_pConnection.CreateInstance(_uui ...
- ADO.NET中的五大对象
Connection connection 对象主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取到数据的.这个物件是ADO.NET的最底层,我们可以自己产生这个对象, ...
- ADO.NET系列之Connection对象
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 ADO.NET概念 ADO ...
- ADO.NET系列之Command对象
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 上一篇<ADO.NE ...
- ADO.NET系列之DataAdapter对象
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 我们前两篇文章介绍了ADO ...
- ADO.net中常用的对象有哪些?
ADO.net中常用的对象有哪些?分别描述一下. 答:Connection 数据库连接对像 Command 数据库命令 DataReader 数据读取器 DataSet 数据集 DataReader与 ...
- BOF和EOF的详细解释 ADO的三个核心对象
使用ADO连接数据库进行查一个列表询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果.这个内存中的列表就是数据集.在你的程序里面rs就是标识的这个数据 ...
- 浅谈Redis五个对象类型的底层原理
本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html Redis是一种key/value型数据库,其 ...
- ADO.NET的五个主要对象
优秀文章链接:http://www.cnblogs.com/xianspace/archive/2009/02/21/1395307.html http://www.cnblogs.com/aito/ ...
随机推荐
- 剑指offer(32)把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 题目分析 主 ...
- HDU 6166 Senior Pan(k点中最小两点间距离)题解
题意:n个点,m条有向边,指定k个点,问你其中最近的两点距离为多少 思路:这题的思路很巧妙,如果我们直接枚举两点做最短路那就要做C(k,2)次.但是我们换个思路,我们把k个点按照二进制每一位的0和1分 ...
- SQL小汇总
SQL小汇总 1.对每个时段的数据进行统计2.查询时间条件(to_date)3.插入序列号和系统时间4.查询当天.7天内.30天内5.查询前后x小时.分钟.天.月.6.保留小数点后4位7.查询字段A中 ...
- C# Array 基本数据类型数组的基类 传参问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 使用 R 语言挖掘 QQ 群聊天记录
1.获取数据 从 QQ 消息管理器中导出消息记录,保存的文本类型选择 txt 文件.这里获取的是某群从 2016-04-18 到 2016-05-07 期间的聊天记录,记录样本如下所示. 消息记录(此 ...
- pytest文档14-函数传参和firture传参数request
前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...
- 接口文档模板(Markdown)
效果 目录 1. 查询指定项目属性接口 1. 查询指定项目属性 接口功能 获取制定项目的分类信息 URL http://www.api.com/index.php 支持格式 JSON HTTP请求方式 ...
- Log4Net 添加自定义字段并保存到数据库
Log4Net是常用的功能强大的日志插件,该插件提供了几个默认字段 大家可能都用过Log4Net插件来记录日志,该插件默认提供了这几个字段@log_date, @thread, @log_level, ...
- C# 使用事务transaction
C# 事务里面如果只是针对单数据库,则可以使用SqlTransaction,跨数据库使用TransactionScope.
- 批量压缩 css js 文件 包含多个文件 自动识别
注意事项 css 注释压缩不会造成影响 因为是块注释 当然也可以选择去注释压缩 js 带注释压缩 要注意注意 注意 //行注释会造成 压缩后的代码在一行 导致注释后的代码都失效 ...