C#2008与.NET 3.5 高级程序设计读书笔记(22)-- ADO.NET之一:连接层

1.ADO.NET数据提供程序的一些核心对象

下图演示了数据提供程序的大概的大致情况,客户程序集可以是:控制台程序,WINDOWS程序,ASP.NET程序,WCF服务,.NET类库等.

微软的.NET提供了SQL Server,Oracle,OLEDB/ODBC等众多数据提供程序,如下图:

2.System.Data命名空间的类型

2.连接对象

Connection类

表示与数据库的连接。可通过Connection的不同属性指定数据源的类型、位置。它起到渠道的作用,其他对象如DataAdapter和Command通过它与数据库进行通信,以提交查询和获取查询结果.

代码
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString
= "user id=sa;password=sinofindb;initial catalog=test;data source=127.0.0.1;Connect Timeout=30";
myConnection.Open();
//或者
string MySqlConnection="user id=sa;password=sinofindb;Database =test;data source=127.0.0.1;Connect Timeout=30";
SqlConnection myConnection
= new SqlConnection(MySqlConnection);
myConnection.Open();

ConnectionStringBuilder类

        ConnectionStringBuilder类也是ADO.NET2.0中新增的,它简化了为.NET数据提供程序建立连接字符串的过程,每个ConnectionStringBuilder类都公开一些属性,这些属性对应于可在.NET数据提供程序的连接字符串中使用的选项。例如SqlConnectionStringBuilder类有DataSource属性,用于指定数据源的位置,InitialCatalog属性用于指定连接哪个数据库,IntegratedSecurity属性用于指定使用何种方式连接。

Command类

        Command对象可表示对数据库的查询,对存储过程的调用,或者返回特定表内容的直接请求。数据库支持多种不同类型的查询。有些查询通过引用一个表或多个表、视图或者是通过调用一个存储过程来获取数据行,有些查询则会对数据行进行修改,还有一些查询通过创建或修改诸如表、视图或存储过程对象来对数据库的结构进行有关操作。Command对象都能够支持。

代码
//步骤一:初始化 SqlCommand 类的新实例
SqlCommand myCommand = new SqlCommand();
//步骤二:建立SqlCommand与SqlConnection的关联
myCommand.Connection = myConnection;
//步骤三:设置SqlCommand的查询文本
myCommand.CommandText = "SELECT * FROM mindata";
//步骤四:执行命令
SqlDataReader myReader = myCommand.ExecuteReader();
while(myReader.Read()) //循环读取数据
{
Console.WriteLine(myReader.GetString(
0));// 获取指定列的字符串形式的值
Console.WriteLine(myReader. GetValue(1));// 获取以本机格式表示的指定列的值
}

DataReader类

        DataReader用于以最快的速度检索并检查查询所返回的行。可使用DataReader对象来检查查询结果,一次检查一行。当移向下一行时,前一行的内容就会被丢弃。DataReader不支持更新操作。由DataReader返回的数据时只读的。由于DataReader对象支持最小特性集,所以它的速度非产快。

//遍历结果集
while (myReader.Read())
Console.WriteLine(
"\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));
myReader.Close();

Transaction类

        有时可能希望将对数据库所作的所有更改组织起来,将它们看做一个独立的工作单元。在数据库编程中,这样的工作单元就成为事务(Transacton)。假设某数据库包含银行的客户信息,还有支票账户表和储蓄账户表,一位用户想要将钱从储蓄账户转到支票账户中去。在所编写的代码中,希望确保储蓄账户的提款操作和支票账户的存款操作是一个独立的单元,要么同时成功完成,要么两项操作都不发生,这就可以通过事务来实现。

        Connection对象有一个BeginTransaction方法,可以用来创建Transactio对象。

Parameter类

        在查询语句中,我们希望通过Where子句来限定条件,这些条件,如果希望在运行时动态指定,那么我们可以通过Parameter对象来实现。我们可以通过为查询中的所有参数创建Parameter对象,并将它们添加到Command对象的Parameter集合中。

DataAdapter类

        就像上面那幅图所示的,DataAdapter负责搬运数据到DataSet中,DataAdapter对象的Fill方法提供了一种高效机制,用于将查询结果引入DataSet或DataTable中,以便能够脱机处理数据。还可以利用DataAdapter对象向数据库提交存储在DataSet对象中的挂起更改。

        DataAdapter公开了大量属性,这些属性实际上是Command对象。例如SelectCommand属性包含一个Command对象,该对象表示将用来填充DataSet对象的查询。此外,DataAdapter还有UpdateCommand、InsertCommand和DeleteCommand等属性,这么做是为了允许开发人员定义自己的更新逻辑。

SqlDataAdapter DataAdapter = new SqlDataAdapter(commandstring, connectionstring);  
DataSet dataset 
= new DataSet();
DataAdapter.Fill(dataset); 

 

posted @ 2010-08-12 09:48  自助者天助  阅读(207)  评论(0编辑  收藏  举报