ADO.Net入门

本文转载自:数据库

做者:可米小子 
出处:http://liuhaorain.cnblogs.com
安全

 

1. 理解Connection对象服务器

Connection对象,顾名思义,表示与特定数据源的链接。若是把数据源比做大门,那么链接字符串则是钥匙,而链接对象则是拿着钥匙开门的人。对于ADO.NET而言,不一样的数据源,都对应着不一样的Connection对象。具体Connection对象以下表:ui

名称 命名空间 描述
SqlConnection System.Data.SqlClient 表示与SQL Server的链接对象  
OleDbConnection System.Data.OleDb 表示与OleDb数据源的链接对象                   
OdbcConnection System.Data.Odbc 表示与ODBC数据源的链接对象                                                                         
OracleConnection System.Data.OracleClient 表示与Orale数据库的链接对象

 无论哪一种链接对象,它都继承于DbConnection类。咱们看看DbConnection类的实现结构:lua

public abstract class DbConnection : Component, 
IDbConnection, IDisposable

从上面,咱们能够看出DbConnection是抽象基类,而且继承Compoent,IDbConnection,IDisposable类。因为DbConnection类是抽象基类,所以它不能实例化。DbConnection类封装了不少重要的方法和属性,下面我将详细讲解几个重要的方法和属性。spa

 

2. 必须掌握的几个方法

Open: 使用 ConnectionString 所指定的设置打开数据库链接。3d

Dispose: 释放由 Component 使用的全部资源。code

Close: 关闭与数据库的链接。 此方法是关闭任何已打开链接的首选方法。Close 方法回滚任何挂起的事务。 而后,它将链接释放到链接池,或者在链接池被禁用的状况下关闭链接。server

 

3. 必须掌握的几个属性

Database: 在链接打开以后获取当前数据库的名称,或者在链接打开以前获取链接字符串中指定的数据库名。对象

DataSource: 获取要链接的数据库服务器的名称。

ConnectionTimeOut: 获取在创建链接时终止尝试并生成错误以前所等待的时间。

ConnectionString: 获取或设置用于打开链接的字符串。

State: 获取描述链接状态的字符串。

 

4. 说说ConnectionState

上面咱们知道,State属性描述了与数据源的链接的当前状态。ConnectionState是一个枚举类型。它包括如下成员:

Closed: 链接处于关闭状态。

Open: 链接处于打开状态。

Connecting: 链接对象正在与数据源链接。

Executing: 链接对象正在执行命令。

Fetching: 链接对象正在检索数据。

Broken: 与数据源的链接中断。

 

5. 实例:链接SQL Server的SqlConnection对象

上面说了那么多理论知识,下面就讲一个链接SQL Server的实例吧!代码以下:

复制代码
 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Data;
6 using System.Data.SqlClient;
7
8 namespace Connection
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 //构造链接字符串
15 SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder();
16 connStr.DataSource = @".\SQLEXPRESS";
17 connStr.InitialCatalog = "master";
18 connStr.IntegratedSecurity = true;
19
20 SqlConnection conn = new SqlConnection();//建立链接对象
21 conn.ConnectionString = connStr.ConnectionString;//设置链接字符串
22
23 conn.Open();//打开链接
24
25 if(conn.State == ConnectionState.Open)
26 {
27 Console.WriteLine("Database is linked.");
28 Console.WriteLine("\nDataSource:{0}",conn.DataSource);
29 Console.WriteLine("Database:{0}",conn.Database);
30 Console.WriteLine("ConnectionTimeOut:{0}",conn.ConnectionTimeout);
31 }
32
33 conn.Close();//关闭链接
34 conn.Dispose();//释放资源
35
36 if(conn.State == ConnectionState.Closed)
37 {
38 Console.WriteLine("\nDatabase is closed.");
39 }
40
41 Console.Read();
42 }
43 }
44 }
复制代码

结果:

 

6. 编写优雅而又安全的代码

(1)添加try...catch块

咱们知道链接数据库时,可能出现异常,所以须要添加异常处理。对于C#来讲,典型的异常处理是添加try...catch代码块。finially是可选的。finially是指不管代码是否出现异常都会执行的代码块。而对数据库链接资源来讲,是很是宝贵的。所以,咱们应当确保打开链接后,不管是否出现异常,都应该关闭链接和释放资源。因此,咱们必须在finially语句块中调用Close方法关闭数据库链接。

 

复制代码
 1 SqlConnection conn = new SqlConnection(connStr);
2 try
3 {
4 conn.Open();
5 }
6 catch(Exception ex)
7 {
8 ;//todo
9 }
10 finially
11 {
12 conn.Close();
13 }
复制代码

 

(2)使用using语句

另一种优雅的方法,则是使用using语句。若是你还不熟悉using语法,我就再啰嗦几句。using语句的做用是确保资源使用后,并很快释放它们。using语句帮助减小意外的运行时错误带来的潜在问题,它整洁地包装了资源的使用。具体来讲,它执行如下内容:

  • 分配资源。
  • 把Statement放进try块。
  • 建立资源的Dispose方法,并把它放进finally块。

所以,上面的语句等同于:

1 using(SqlConnection conn = new SqlConnection(connStr))2 {3      ;//todo4 }
相关文章
相关标签/搜索