首先来一张关系图,了解大概关系。

知道了整个大关系之后,我们在具体看一下他们五个的分工:

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 的五个对象的更多相关文章

  1. ADO中最重要的对象有三个:Connection、Recordset和Command

    ConnectionPtr: _ConnectionPtr m_pConnection; HRESULT hr; try{ hr = m_pConnection.CreateInstance(_uui ...

  2. ADO.NET中的五大对象

    Connection connection 对象主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取到数据的.这个物件是ADO.NET的最底层,我们可以自己产生这个对象, ...

  3. ADO.NET系列之Connection对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 ADO.NET概念 ADO ...

  4. ADO.NET系列之Command对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 上一篇<ADO.NE ...

  5. ADO.NET系列之DataAdapter对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 我们前两篇文章介绍了ADO ...

  6. ADO.net中常用的对象有哪些?

    ADO.net中常用的对象有哪些?分别描述一下. 答:Connection 数据库连接对像 Command 数据库命令 DataReader 数据读取器 DataSet 数据集 DataReader与 ...

  7. BOF和EOF的详细解释 ADO的三个核心对象

    使用ADO连接数据库进行查一个列表询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果.这个内存中的列表就是数据集.在你的程序里面rs就是标识的这个数据 ...

  8. 浅谈Redis五个对象类型的底层原理

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html Redis是一种key/value型数据库,其 ...

  9. ADO.NET的五个主要对象

    优秀文章链接:http://www.cnblogs.com/xianspace/archive/2009/02/21/1395307.html http://www.cnblogs.com/aito/ ...

随机推荐

  1. 02:golang基础

    1.1 golang中的init函数和main函数 1.init函数和main函数 1. golang里面有两个保留的函数:init函数(用于所有package)和main函数(只能用于package ...

  2. PTA编程总结1—打印沙漏

    题目:7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓&q ...

  3. New需谨慎

    New is Glue When you’re working in a strongly typed language like C# or Visual Basic, instantiating ...

  4. Mybatis自动生成,针对字段类型为text等会默认产生XXXXWithBlobs的方法问题

    需要修改generatorConfiguration.xml,里面的table加属性:<table tableName="t_ticketcase" domainObject ...

  5. linux 因内存不足而 kill 掉 java 程序

    grep "Out of memory" /var/log/messages Sep 17 16:13:34 xxxaaa kernel: Out of memory: Kill ...

  6. 从多个角度来理解协方差(covariance)

    起源:协方差自然是由方差衍生而来的,方差反应的是一个变量(一维)的离散程度,到二维了,我们可以对每个维度求其离散程度,但我们还想知道更多.我们想知道两个维度(变量)之间的关系,直观的举例就是身高和体重 ...

  7. Web版记账本开发记录(五)

    今天是第五天,不过今天有点事什么都没做,只是看了看一些教学视频, 今天家里有事, 还没来得及实践,等明天再实践,然后再完善完善.

  8. Luffy之结算订单页面(订单模型表的创建,订单的生成,以及订单详情展示等)

    订单页面 在前面我们已经构建了,购物车的页面,接下来到了结算页面 1.首先,在购物车页面点击去结算按钮时,我们需要做如下动作 .前端发送生成订单的请求,点击标签内触发事件 create_order t ...

  9. 如何从零开始在github上新建项目

    准备工作: (1)安装git: Git-2.16.1-64-bit.exe (2)新建一个文件夹grpc007,作为本地git仓库 (3)进入到grpc007目录,右键/打开git bash.使用gi ...

  10. 洛谷P3225 HNOI2012 矿场搭建

    题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之 ...