ASP.Net下的数据访问层的封装(C#)

晚上有点时间,整理一下自己的文档,写点东西记念一下。

我们操作数据库的时候,必不可少地要写连接字符串,其中包括设置用户名,密码,服务器名等等……还要执行SQL语句,得到它的返回值。而这些操作,每次都要做,这就给我们提出了封装的需求。

ASP.NET中对于数据库的连接字符串,可以放在Web.config中,类似下面的形式:

 <!--这是一个自定义的连接字符串配置文件-->
 <appSettings>
  <add key="server" value="localhost" />
  <add key="database" value="ittsdb" />
  <add key="username" value="k{wyhfzeiatg" />
  <add key="password" value="k{wyhfzeiatg" />
  <add key="virtualpath" value="//itts" />
 </appSettings>

有了这些数据,就可以在ASPX中封装了,偶们先定义一个Class,形式如下:

public class DBA_SqlServer
{
  private System.Data.SqlClient.SqlConnection m_SqlConnection;

  public DBA_SqlServer(string DBConnectionString)
  {
   m_SqlConnection=new System.Data.SqlClient.SqlConnection(DBConnectionString);
  }

  public DBA_SqlServer()
  {
   m_SqlConnection=new System.Data.SqlClient.SqlConnection();
   m_SqlConnection.ConnectionString=GetSqlConnectionString();
  }

  public override System.Data.DataTable ExecuteDataTable(string sqlstr)
  {
   if(sqlstr=="")
    return null;
   //m_SqlConnection.Open();
   System.Data.SqlClient.SqlDataAdapter sqlda=new System.Data.SqlClient.SqlDataAdapter(sqlstr,m_SqlConnection);
   System.Data.DataTable dt1=new System.Data.DataTable();
   sqlda.Fill(dt1);
   sqlda.Dispose();
   sqlda=null;
   //m_SqlConnection.Close();
   return dt1;
  }

  static public string GetSqlConnectionString()
  {
   string connstr,servername,databasename,username,password;
   servername=ConfigurationSettings.AppSettings["server"];
   databasename=ConfigurationSettings.AppSettings["database"];
   username=DeEncryptStr(System.Configuration.ConfigurationSettings.AppSettings["username"]);
   password=DeEncryptStr(System.Configuration.ConfigurationSettings.AppSettings["password"]);
   connstr="Persist Security Info=False;database="+databasename+";server="+servername+";user id="+username+";password="+password;
   return connstr;
  }


}
上面的GetSqlConnectionString()函数,用来获取Web.Config中的连接字符串信息,然后生成连接字符串。

而ExecuteDataTable(string sqlstr),是用来执行SQL语句,获得返回的DataTable

使用这个类,可以按如下方式:
new DBA_SqlServer().ExecuteDataTable("select * from 表名");
就可以执行SQL语句,返回所需要的DataTable,是不是很方便呢?

posted on 2005-09-28 00:18  冰原雪龙  阅读(1215)  评论(0编辑  收藏  举报