.ASPX面页


Code 
  
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
     <title>无标题页</title>
</head>
<body>
     <form id="form1" runat="server">
     <div>
         模式选择:<asp:RadioButtonList ID="rbl_Mode" runat="server" AutoPostBack="True" OnSelectedIndexChanged="rbl_Mode_SelectedIndexChanged" RepeatColumns="2" RepeatLayout="Flow">
             <asp:ListItem Selected="True" Value="0">身份验证模式</asp:ListItem>
             <asp:ListItem Value="1">信任模式</asp:ListItem>
         </asp:RadioButtonList><br /><br />
         服务器名:<asp:TextBox ID="tb_Server" runat="server"></asp:TextBox>
             数据库名:<asp:TextBox ID="tb_Database" runat="server"></asp:TextBox><br />
         <br />
         <asp:Panel ID="P_UserAccount" runat="server" Height="30px" Width="600px">
             用户名:  
             <asp:TextBox ID="tb_UserID" runat="server"></asp:TextBox>
                 密码:      
             <asp:TextBox ID="tb_Password" runat="server"></asp:TextBox></asp:Panel>
         <br />
          <asp:Button ID="btn_Connect" runat="server" Text="连接数据库" OnClick="btn_Connect_Click" /></div>
     </form>
</body>
</html> 
 
 
.CS面页
 
 
 
  Code 
  
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Data.SqlClient;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
 {
     protected void Page_Load(object sender, EventArgs e)
     {

     }
     protected void rbl_Mode_SelectedIndexChanged(object sender, EventArgs e)
     {
         if (rbl_Mode.SelectedValue == "0")
         {
             P_UserAccount.Visible = true;
         }
         else
         {
             P_UserAccount.Visible = false;
         }
     }
     protected void btn_Connect_Click(object sender, EventArgs e)
     {
         //先初始化一个连接字符串,之后我们会根据页面上用户选择的数据进行拼接
        string sConnectionString = "";
         if (rbl_Mode.SelectedValue == "0")
         {
             //如果用户选择的是身份验证模式则需要拼接4个参数,分别是服务器地址、数据库名、帐号和密码
            sConnectionString = string.Format("Server={0};Database={1};User ID={2};Password={3}", tb_Server.Text, tb_Database.Text, tb_UserID.Text, tb_Password.Text);
         }
         else
         {
             //如果用户选择的是信任模式则只需拼接两个参数,分别为服务器地址和数据库名
            sConnectionString = string.Format("Server={0};Database={1};Trusted_Connection=True;", tb_Server, tb_Database);
         }
         //在这里创建一个SqlConnection对象,并且为其构造方法提供了连接字符串
        SqlConnection conn = new SqlConnection(sConnectionString);
         try
         {
             //调用SqlConnection对象的Open()方法打开指向数据库链接
            conn.Open();
             if (conn.State == ConnectionState.Open)
                 Response.Write("连接数据库成功");
         }
         catch (SqlException sqlException)
         {
             Response.Write(sqlException.Message);
         }
         finally
         {
             if (conn.State == ConnectionState.Open)
                 conn.Close();
         }
     }
 }

 

  1.首先,我们根据 RadioButtonList 所选的值来生成身份验证模式和信任模式的数据库连接字符串。对于身份验证模式有4个参数,对于信任模式只有两个参数。
  2.然后,我们声明一个SqlConnection对象用于数据库的连接。在构造方法中传入已经声明的数据库连接字符串。我们知道,在C#中实例化一个类的方法为“类名=new”类的构造方法名()。上述代码中,使用了SqlConnection类带一个字符串参数的构造方法来实例化。

  3.之后,我们使用 try{} catch{} finally{}程序块来捕获连接失败的异常。在 try{}中,我们使用Sqlconnection对象的Open()方法打开数据库。如果我们设置的数据库服务器不存在或者数据库不存在就会在这里引发异常,程序转入catch()中,并输出异常信息。如果一切正常的话,我们再确认一下SqlConnection对象的State属性的值是否已经是ConnecionState.Open(ConnectionState是一个枚举类型,表示连接状态),如果是的话输出成功信息。
  4.最后要记住一点,数据库的连接是非常宝贵,一个活动连接只能为一个客户端服务。