01  Connection 对象概述         Connection 对象是一个连接对象,主要功能是建立与物理数据库的连接,其主要包括4种访问数据库的对象类,也可称为数据提供程序,分别介绍如下。   

      C# 连接数据库_数据库   SQL Server 数据提供程序,位于 System.Data SqlClient 命名空间。   

      C# 连接数据库_sql_02   ODBC 数据提供程序,位于 System.Data.Odbc 命名空间。   

      C# 连接数据库_连接数据库_03   OLEDB 数据提供程序,位于 System.Data.OleD6 命名空间。     

      C# 连接数据库_连接数据库_03   Oracle 数据提供程序,位于 System.Data.OracleClient 命名空间。


  说明   根据使用数据库的不同,引入不同的命名空间,然后通过命令空间中的 Connection 对象连接类连接数据库。例如,连接SQL Server 数据库,首先要通过using System.Data.SqlClient 命令引用SQL Server 数据提供程序,然后才能调用空间下的SqlConnection 类连接数据库。


02  连接数据库

     以 SQL Server 数据库为例,如果要连接 SQL Server 数据库,必须使用 System. Data.SqlClient命令空间下的 SqlConnection 类。所以首先要通过 using System.Data.SqlClient 命令引用命名空间,连接数据库之后,通过调用 SqlConnection 对象的 Open 方法打开数据库。通过 SqlConnection 对象的 State 属性判断数据库的连接状态。      语法如下:         public override ConnectionState State{ get; }        属性值:ConnectionState 枚举。        ConnectionState 枚举的值及说明如表1 所示。表1 ConnectionState 枚举的值及说明C# 连接数据库_连接数据库_05

       【例1】创建一个 Windows 应用程序,在窗体中添加一个TextBox 控件、一个 Button 控件和一个 Label 控件,分别用于输入要连接的数据库名称、执行连接数据库的操作及显示数据库的连楼状态。然后引入 System.Data.SqlClient 命名空间,使用 SqlConnection 类连接数据库。

     代码如下: 

private void button1_Click(object sender, EventArgs e)
{
     if(textBox1.Text =="")                              //判断是否输入数据库名称 
     {
           MessageBox.Show("请输入要连接的数据库名称")  //弹出提示信息 
     }
     else  //否则 
     {
           try                                            //调用 try...catch 适句 
           {
//声明一个字符串,用于存储连接数据库字符串
              string ConStr = "server =.;database="+ textBox1.Text.Trim()+";uid=sa;pwd=";
              //创建一个 SqlConnection 对象
              SqlConnection conn = new SqlConnection(ConStr);
              conn.Open();                               //打开连接
              if(conn.State == ConnectionState.Open)     //判断当前连接的状态
 {
//显示状态信息
                   label2.Text = "数据库【"+textBox1.Text.Trim()+*】已经连接并打开";
              }
      }
catch
{
          MessageBox.Show("
      }
   }
}


程序的运行结果如图1 所示。


C# 连接数据库_连接数据库_06

图1  连接数据库


03  关闭连接

        当对数据库操作完毕后,要关闭与数据库的连接,释放占用的资源,可以通过调用 SqlCnnection对象的 Close 方法或 Dispose 方法关闭与数据库的连接,这两种方法的主要区别是:Close用于关闭一个连接,而 Dispose 方法不仅关闭一个连接,而且还清理连接所占用的资源。当使用 Close方法关闭连接后,可以再调用 Open 方法打开连接,不会产生任何错误。而如果使用 Dispose 方法关闭连接。就不可以再次直接用 Open 方法打开连接,必须再次重新初始化连接再打开。

       【例1】 创建一个 Windows 应用程序,首先向窗体中添加一个TextBox 控件和一个 RichTextBox 控件,分别用于输入连接的数据库名称和显示连接信息及错误提示。然后再添加 3 个 Buton 控件,分期用于连接数据库、调用 Close 方法关闭连接,再调用 Open方法打开连接以及调用 Dispose 方法关闭并释放连接,然后调用 Open 方法打开连接。      代码如下: 

SqlConnection conn;                                       //SqlConnection  
private void button1_Click(object sender, EventArgs e)
{
     if(textBox1.Test =="")                              // 
     {
          MessageBox.Show("") ;        // 
}
else //
{
          try                                          // try...catch 
          {
              //
              string str = "server=,;database=" + textBox1.Text.Trim() + ";uid=sa;pwd";
              conn = new SqlConnecion(str);  // SqlConnection  
              conn.Open();  // 
if(conn.State == ConnectionState.Open) //
{
MessageBox.Show(") //
              }
          }
catch(Exception ex)
{
             MessageBox.Show(ex.Message);                  // 
             textBox1.Text = "";                           // 
          }
     }
}
private void button2_Click(object sender, EventArgs e)
{
try // try...catch
    {
        string str="";                                //
        conn.Close();                                 //使 Close 
        if(conn.State == ConnectionState.Closed)      //
        {
             str="\n:                  // 
        }
        conn.Open(); //
        if(conn.State == ConnectionState.Open)      //
        {
             str += "\n";        // 
        }
richTextBox1.Text = str;  // richTextBox1  
   }
   catch(Exception ex)
   {
        richTextBox1.Text = ex.Message;  // richTextBox1
   } 
}
private void button3_Click(object sender,EventArgs e)
{
    try                                          // try...cstch 
    {
         conn.Dispose();  //使 Dispose  
conn.Open(); //使 Open
    }
catch(Exception ex)
{
richTextBox1.Text = ex.Message; // richTextBox1
    }
}

程序的运行结果如图2 和图3 所示。
图2 调用 Close 方法关闭连接

C# 连接数据库_连接数据库_07


图3 调用 Dispose 方法关闭并释放连接 

C# 连接数据库_连接数据库_08



说明        在编写应用程序时,对数据库操作完成后,要及时关闭数据库的链接,以防止在对数据库进行其他操作时数据库被占用。






END -




C# 连接数据库_连接数据库_09