注意:只能在关闭Connection对象时设置ConnectionString属性。
打开和关闭数据库连接
生成Connection对象并将其设置ConnectionString属性设置为数据库连接的相应细节之后,就可以打开数据库连接。为此可以调用Connection对象的Open()方法。其方法如下:
完成数据库的连接之后,我们可以调用Connection对象的Close()方法关闭数据库连接。例如:
下面是一个显示如何用SqlConnection对象连接Sql Server Northwind数据库的实例程序,并且显示该SqlConnection对象的一些属性。
范例程序代码如下:
01 public partial class _Default : System.Web.UI.Page 02 { 03 protected void Page_Load(object sender, EventArgs e) 04 { 05 //建立数据库连接字符串 06 string connectionString = "server=localhost;database=Northwind; 07 integrated security=SSPI"; 08 //将连接字符串传入SqlConnection对象的构造函数中 09 SqlConnection mySqlConnection = new SqlConnection(connectionString); 10 try 11 { 12 //打开连接 13 mySqlConnection.Open(); 14 //利用label控件显示mySqlConnection对象的ConnectionString属性 15 lblInfo.Text = "<b>mySqlConnection对象的ConnectionString属性为:<b>" + 16 mySqlConnection.ConnectionString + "<br>"; 17 lblInfo.Text += "<b>mySqlConnection对象的ConnectionTimeout属性为<b>" + 18 mySqlConnection.ConnectionTimeout + "<br>"; 19 lblInfo.Text += "<b>mySqlConnection对象的Database属性为<b>" + 20 mySqlConnection.Database + "<br>"; 21 lblInfo.Text += "<b>mySqlConnection对象的DataSource属性为<b>" + 22 mySqlConnection.DataSource + "<br>"; 23 lblInfo.Text += "<b>mySqlConnection对象的PacketSize属性为<b>" + 24 mySqlConnection.PacketSize + "<br>"; 25 lblInfo.Text += "<b>mySqlConnection对象的ServerVersion属性为<b>" + 26 mySqlConnection.ServerVersion + "<br>"; 27 lblInfo.Text += "<b>mySqlConnection对象的当前状态为<b>" + 28 mySqlConnection.State + "<br>"; 29 } 30 catch (Exception err) 31 { 32 lblInfo.Text = "读取数据库出错"; 33 lblInfo.Text += err.Message; 34 } 35 finally 36 { 37 //关闭与数据库的连接 38 mySqlConnection.Close(); 39 lblInfo.Text += "<br><b>关闭连接后的mySqlConnection对象的状态为:</b>"; 40 lblInfo.Text += mySqlConnection.State.ToString(); 41 } 42 } 43 } |
程序代码说明:在上述范例的程序代码中,我们利用try catch finally对数据库连接进行异常处理。当无法连接数据库时将抛出异常,并显示出错信息,见catch代码块所示。在此程序中,无论是否发生异常,都可以通过finally区块关闭数据库的连接,从而节省计算机资源,提高了程序的效率和可扩展性。
执行结果:
 执行结果 |
当然,我们还可以采用一种更加简便的方法来实现上述程序的功能。这就是将SqlConnection对象包含到using区块中,这样程序会自动调用Dispose()方法释放SqlConnection对象所占用的系统资源,无需再使用SqlConnection对象的Close()方法。
范例程序代码如下:
01 public partial class _Default : System.Web.UI.Page 02 { 03 protected void Page_Load(object sender, EventArgs e) 04 { 05 string connectionString = "server=localhost;database=Northwind; 06 integrated security=SSPI"; 07 SqlConnection mySqlConnection = new SqlConnection(connectionString); 08 using (mySqlConnection) 09 { 10 mySqlConnection.Open(); 11 lblInfo.Text = "<b>mySqlConnection对象的ConnectionString属性为:<b>" + 12 mySqlConnection.ConnectionString + "<br>"; 13 lblInfo.Text += "<b>mySqlConnection对象的ConnectionTimeout属性为<b>" + 14 mySqlConnection.ConnectionTimeout + "<br>"; 15 lblInfo.Text += "<b>mySqlConnection对象的Database属性为<b>" + 16 mySqlConnection.Database + "<br>"; 17 lblInfo.Text += "<b>mySqlConnection对象的DataSource属性为<b>" + 18 mySqlConnection.DataSource + "<br>"; 19 lblInfo.Text += "<b>mySqlConnection对象的PacketSize属性为<b>" + 20 mySqlConnection.PacketSize + "<br>"; 21 lblInfo.Text += "<b>mySqlConnection对象的ServerVersion属性为<b>" + 22 mySqlConnection.ServerVersion + "<br>"; 23 lblInfo.Text += "<b>mySqlConnection对象的当前状态为<b>"+ 24 mySqlConnection.State + "<br>"; 25 } 26 lblInfo.Text += "<br><b>关闭连接后的mySqlConnection对象的状态为:</b>"; 27 lblInfo.Text += mySqlConnection.State.ToString(); 28 } 29 } |
程序代码说明:在上述范例的程序代码中,采用using(mySqlConnection)的形式使得代码更加简洁,并且其最大的优点就是无需编写finally区块代码,可以自动关闭与数据库的连接。