代码改变世界

ADO.NET 之 二

2012-12-29 23:09  y-z-f  阅读(315)  评论(0编辑  收藏  举报

 

二、数据库连接篇

在 AOD.NET 中我们都是使用 SqlConnection 类来连接数据库的,所以这节我们主要介绍的是

1. SqlConnection类的详细使用方法

1.1 构造函数

1 //1.
2   SqlConnection()
3 //2.
4   SqlConnection( string connectionString )

1.2 或者设置连接数据库的字符串

1 SqlConnection con = new SqlConnection();
2 con.ConnectionString = "";  //设置数据库的连接字符串

1.3 设置连接超时

1 SqlConnection con = new SqlConnection();
2 con.ConnectionTimeout = 30;// 设置连接超时

1.4 设置需要连接的数据库名称

1 SqlConnection con = new SqlConnection();
2 con.Database = ""; //设置需要连接的数据库名称

1.5 设置需要连接的数据库实例名称

1 SqlConnection con = new SqlConnection();
2 con.DataSource = "";// 设置需要连接的数据库实例名称

1.6 获取实例通信的网络数据包的大小(以字节为单位)

1 SqlConnection con = new SqlConnection();
2 int pack_size = con.PacketSize(); //获得实例通信的数据包大小

1.7 获取当前数据库连接状态

1 SqlConnection con = new SqlConnection();
2 ConnectionState state = con.State; //获得当前的链接状态

其中的值为枚举:

 1 [Flags]
 2 public enum ConnectionState
 3 {
 4      //链接处于关闭状态
 5     Closed = 0,
 6      //链接处于打开状态
 7     Open = 1,
 8      //正在与数据库链接
 9     Connecting = 2,
10      //正在执行命令
11     Executing = 4,
12      //正在检索数据
13     Fetching = 8,
14      //与数据库连接中断
15     Broken = 16;
16 }

在实际中可以判断此连接状态决定是否执行有关功能.

1.8 打开数据库连接

1 SqlConnection con = new SqlConnection();
2 con.Open(); //打开数据库连接

但是这边有一个问题不是每次打开都可以成功的,即使你的数据库连接字符串是正确的.
所以我们还需要 catch 以下异常来处理

  1. InvalidOperationExcuption:
    未指定数据源或服务器,无法进行连接/连接已打开
  2. SqlException:
    在连接过程中出现错误
 1 SqlConnection con = new SqlConnection();
 2 try
 3 {
 4      con.Open();
 5 }
 6 catch( InvalidOperationExcuption e )
 7 {
 8     //处理不能打开或连接已打开
 9 }
10 catch( SqlException e )
11 {
12     //处理连接过程中的错误
13 }

1.9 改变需要连接的数据库名称

1 using(SqlConnection con = new SqlConnection())
2 {
3     con.Open();
4     con.ChangeDatabase("NORTHWND");
5     //...
6 }

当然改变了需要连接的数据库名称中假如服务器没有该数据库名称或者没有权限打开等等都是会发生的事情,所以我们要处理可能的异常

 1 using(SqlConneciton con = new SqlConnection())
 2 {
 3      con.Open();
 4      try
 5      {
 6          con.ChangeDatabase("NORTHWND");
 7      }
 8      catch( ArgumentExcuption e )
 9      {
10           //数据库名称无效
11      }
12      catch( InvalidOperationExcuption e )
13     {
14         //连接失败
15     }
16      catch( SqlException e )
17     {
18        //不能更改数据库
19     }
20 }

1.10 更改用于连接数据库的用户密码

1 using(SqlConnection con = new SqlConnection())
2 {
3     con.ChangePassword(""); //修改密码
4 }

1.11 关闭连接

1 using(SqlConnection con = new SqlConnection())
2 {
3       con.Open();
4       con.Close();
5 }

1.12 创建一个SqlCommand对象

using(SqlConnection con = new SqlConnction())
{
     con.Open();
     SqlCommand cmd = con.CreateCommand();//创建一个SqlCommand对象
}

1.13 事件

[1]返回一个警告或信息性消息时发生

using( SqlConnction con = new SlqConnection() )
{
    con.InfoMessage += new SqlInfoMessageEventHandler()
}
public  void DealWithSqlInfo( Object sender , SqlInfoMessageEventArgs e )
{
    //do something
}

[2]当连接状态更改时发生

using(SqlConnection con = new SqlConnection() )
{
     con.StateChange += new StateChangeEventHandler();
}
public void DealWithStateChg( Object sender , StateChangeEventArgs e )
{
     //处理状态改变事件
}

 到这里为止就都是关于 SqlConnection 的知识了,这样基本上大家对于连接导数据这部分可以更好的理解了