前面曾提到过ADO.NET的连接层允许通过数据提供程序的连接、命令、数据读取器对象与数据
库进行交互。当想连接数据库并且使用一个数据读取器对象来读取数据时.需要实现下面的几个步骤
* 创建、配置、打开连接对象。
* 创建、配置一个命令对象.通过构造参数或Connection 属性指定连接对象。
* 执行配置后的命令对象的 ExecuteReader()方法。
* 使用数据读取器的 Read()方法一条一条处理记录。
using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = "server=服务器名;User ID=用户名;Password=密码;database=数据库名"; cn.Open(); string sql = "select top 10 * from TCustomer"; SqlCommand cmd = new SqlCommand(sql, cn); using (SqlDataReader adater = cmd.ExecuteReader()) { while (adater.Read()) { Console.WriteLine(adater["CustomerId"]); } } }
使用连接对象
使用数据提供程序需要做的第一步就是使用连接对象(前面说过从DbConnection继承)去和数据库建立一个会话。.NET连接对象需要称一个符合一定格式的连接字符今进行创建。通常它包含了几对名称/值的信息并且通过分号分割。这些信息用来确定你想要连接的计算机名、必要的安全配置、机器上数据库的名字和其他一些数据提供程序特有的信息。
Inltlal cata1og 名涉及我们需要建立会话的数据库。 DataSource 名表示维护数据库的机器名。在这里,(local)允许我们定义一个标识来指示当前本地机器(不管这个机器的名字是什么),而\ SQL ExpRES 标识通知SQL server 提供程序:正在连接到SQL serverExpRES默认版本的安装。(如果我们在完整版本的SQL server 上创建AutoLot,就只需要写Data Source=(local))
除了这些,我们还可以提供许多表示安全资格的标识。在这里.我们设置Integrated securlty 为SSPI (等价于 true ) .它使用当前的 windows 帐户凭据作为用户身份验证。
DbConnection类型成员
* BeginTransation() 用来开始教据库事务
* ChnageDatabase() 为打开的连接更改当前教据库
* ConnectionTimeout 这个只读属性返回建立连接时终止尝试并生成错误之前所等待时间(默认15秒)如果想修改这个值,请在连接字符串中加入Connect TimeOut 片段(Connect TimeOut=30 )
* DataBase 获取连接对象的教据库名
* DataSource 获取连接时象的教据库服务器名
* GetSchema() 返回一个包含数据源结构信息的DataTable对象
* State 这个只读属性获取当前连接状态.表示为 ConnectionState 枚举形式
DbConnection类型的这些属性实际上是只读的,只有我们想在运行时得到连接的一些特征时才会去用它们。如果需要修改这些默认设置的话,必须改变连接字符串本身
使用ConnectionStringBuilder对象
ConnectionStringBuilder:连接字符串析造函数对象.通过它能使用强类型化的属性来指定名称/值对。
Console.WriteLine("*****ConnectionStringBuilder****"); SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.InitialCatalog = "数据库名"; sb.DataSource = @"服务器名"; sb.ConnectTimeout = 30; sb.IntegratedSecurity = true; //或 string cnstr = @"Data Source=服务器名;" + "Integrated Security=SSPI;Initial Catalog=数据库名"; SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(cnstr); sb.ConnectTimeout = 5; using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = sb.ConnectionString; cn.Open(); }
使用连接对象
DbCommand类型的成员 | |
CommandTimeOut | 获取或设置在终止执行命令的尝试并生成错误之前的等待时间.默认 30秒 |
Connection | 获取或设置此DbCommand实例使用的DbConnection |
Parameters | 获取DbParameter对象的集合.用于参教化查询 |
Cancel() | 取消执行命令 |
ExecuteReader() | 执行SQL查询并返回一个数据提供程序的DbDataReader对象,以只读向前的方式访问查询结果 |
ExecuteNonQuery() | 提交SQL语句到数据库,不会有返回值(如插入、更新、删除或创建表) |
ExecuteScalar() | 一个轻量级版本的 EExecuteReader .用于返回一个值的查询(比如得到记录总数) |
Prepare() | 在数据源上创建该命令的准备好(或已编译)的版本,找们知道这样一个查询的执行速度会稍微快些(特别是在你想多次执行相同查询的情况下) |