天天看点

ASP.net2.0中数据库连接字符串

ASP.net2.0中配置 数据库连接字符串

Asp.net 2.0中通常可以将数据库连接字符串保存于.aspx页面中,但为了保持一致性及提高效率可以将ConnectionString属性保存于Web.config中,如下所示:

...

<connectionStrings>

    <add name="NorthwindConnectionString" connectionString="Data Source=JYUE/SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"

            providerName="System.Data.SqlClient" />

</connectionStrings>

...

name标识为字符串名称

connectionString为具体连接字符串

providerName为数据提供程序,本例为SQL数据库

配置完毕后可以以.aspx页面中如下形式引用连接字符串

<%$ ConnectionStrings:NorthwindConnectionString %>

上面的方法虽然简便,但安全性不高,ASP.net2.0提供了简便的加密方法,即使用aspnet_iis.exe命令,该命令位置如下:

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727

注意,具体情况视系统位置及版本号有所差异

在命令模式下进入该目录即可运行,完整命令为:

aspnet_iis -pef "connectionStrings" "Web.cofing绝对路径(注:不需要输入web.config)"

如果正常会提示“成功”,此时打开Web.config会发现字符串已加密

解密命令为:

aspnet_iis -pdf "connectionStrings" "Web.cofing绝对路径(注:不需要输入web.config)"

注意的是加密、解密必须在一台机器上完成。

通过web.config配置数据库连接池

下面讲述在VS2005中如何使用web.config配置文件,进行数据库的连接操作,并启用SQL Server数据库的连接池,相信对于已经熟悉VS2003的、刚进入05的环境的朋友会有些帮助。

    首先,在05中,默认情况下,并没有自动为应用程序生成web.config,当第一次运行应用程序的时候,会出现Debuging Not Enabled的提示,点击OK按钮,会为应用程序生成一个web.config配置文件。在<configuration>元素中,已经有 了如下两个节点元素:

 <appSettings/>

 <connectionStrings/>

03 中,数据库的连接配置是在<appSettings/>中通过add key=" connStr " value = " "来指定的;05中,"connectionStrings 元素为 ASP.NET 应用程序和 ASP.NET 功能指定数据库连接字符串(名称/值对的形式)的集合。在以前的 ASP.NET 版本中,连接字符串存储在 appSettings 中。在 ASP.NET 2.0 中,如会话、成员资格、个性化设置和角色管理器等功能均依赖于存储在 connectionStrings 元素中的连接字符串。您还可以使用 connectionStrings 元素来存储您自己的应用程序的连接字符串。"——SDK。

可以将<connectionStrings/>用下面的代码替换:

 <connectionStrings>

    <add

      name="CONNSTRING"

      connectionString="data source =localhost;uid =sa;pwd=;database=Book;pooling=true"/>  //注意:pooling也可以在后面通过代码指定

  </connectionStrings>

应用程序中这样读取即可:

    private readonly string SQLCONNECTIONSTRING = ConfigurationManager.ConnectionStrings["CONNSTRING"].ConnectionString;

下面是测试的例子,当然基本的ADO.NET连接数据库的知识要知道。

建立一个DbPooling.aspx,代码如下:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Collections;

using System.Web;

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 DbPooling : System.Web.UI.Page

{

    private readonly string SQLCONNECTIONSTRING = ConfigurationManager.ConnectionStrings["CONNSTRING"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            ConnectionObject();

            DataSet ds = null;

            for (int i = 0; i < 1000; i++)

            {

                ds = GetCustomers(true);    //true——配置连接池

            }

            GridView1.DataSource = ds;      //03中的DataGrid现在是GridView

            GridView1.DataBind();

        }

    }

    private DataSet GetCustomers(bool nStartPooling)

    {

        string connStr = SQLCONNECTIONSTRING + "Pooling=" + nStartPooling.ToString();   //通过传递的bool指定是否配置连接池

        Label1.Text = connStr;

        SqlConnection conn = new SqlConnection(connStr);

        string cmdText = "SELECT Top 10 * FROM Book";

        SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);

        conn.Open();

        DataSet ds = new DataSet();

        da.Fill(ds);

        conn.Close();

        return ds;

    }

    private void ConnectionObject()

    {

        SqlConnection conn = new SqlConnection(SQLCONNECTIONSTRING);

        string cmdText = "SELECT Count(*) as BookCount FROM Book";

        SqlCommand comm = new SqlCommand(cmdText, conn);

        conn.Open();

        int result = (int)comm.ExecuteScalar();

        Response.Write("Book表的记录数为:" + result.ToString());

        Response.Write("<br>SQL Server数据库的连接状态为:" + conn.State.ToString());

        Response.Write("<br>SQL Server数据库连接的通信包的大小为:" + conn.PacketSize.ToString());

        Response.Write("<br>SQL Server数据库连接的数据库为:" + conn.Database.ToString());

        Response.Write("<br>SQL Server数据库连接的工作站点:" + conn.WorkstationId.ToString());

        conn.Close();

        Response.Write("<br>SQL Server数据库的连接状态:" + conn.State.ToString());

    }

}

      对于刚刚开始熟悉 VS2005 的朋友来说,很多细节的东西要与03区别,当然,查一下SDK很容易找到异同和解决方法,本文小例针对在05中初次配置web.config遇到的小麻烦 做一总结,详细的 configuration 操作可以参考SDK了,呵呵。