9.2.2 使用Connection对象连接数据库

本文介绍了一个ASP.NET应用程序如何根据用户的选择动态生成数据库连接字符串并建立连接的过程。包括身份验证模式和信任模式两种方式。

.ASPX面页

ContractedBlock.gifExpandedBlockStart.gifCode
<%@ 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>
        
&nbsp; &nbsp; 数据库名:<asp:TextBox ID="tb_Database" runat="server"></asp:TextBox><br />
        
<br />
        
<asp:Panel ID="P_UserAccount" runat="server" Height="30px" Width="600px">
            用户名: 
&nbsp;
            
<asp:TextBox ID="tb_UserID" runat="server"></asp:TextBox>
            
&nbsp; &nbsp; 密码: &nbsp; &nbsp; &nbsp;
            
<asp:TextBox ID="tb_Password" runat="server"></asp:TextBox></asp:Panel>
        
<br />
        
&nbsp;<asp:Button ID="btn_Connect" runat="server" Text="连接数据库" OnClick="btn_Connect_Click" /></div>
    
</form>
</body>
</html>

 

.CS面页

ContractedBlock.gifExpandedBlockStart.gifCode
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.最后要记住一点,数据库的连接是非常宝贵,一个活动连接只能为一个客户端服务。

转载于:https://www.cnblogs.com/0754ydj/archive/2008/07/29/1255983.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值