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,是不是很方便呢?