惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Vercel News
Vercel News
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
量子位
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)

博客园 - 冰原雪龙

IIS7和json 添加行的VBA小程序 - 冰原雪龙 - 博客园 SQL Server 2005 输入框不能输入中文问题 如何恢复Windows Vista/XP双启动菜单 flex2,富客户端,B/S结构的新方向?(原创) 修复VISTA启动菜单故障(原创) 更改SQL表的所有者 项目申报系统策划 C#中调用IE打开某文档 - 冰原雪龙 - 博客园 最近学习AJAX和版本控制,收集到的网站 终于用上了版本控制工具Subversion,感觉真不错。 系统:远程登录用户管理小技巧 终于考完研了,是该把一些积了一个月的事了结一下的时候了。 ·转贴·正则表达式的应用技巧 [转贴]正则表达式从入门到精通 今年一定要考上研究生,努力看英语中……编程方面也要努力 好不容易,明天终于要回家了 不知不觉,离创建这个BLOG已经过了不短的时间 刚建了Blog,写个东西留念
ASP.Net下的数据访问层的封装(C#)
冰原雪龙 · 2005-09-28 · via 博客园 - 冰原雪龙

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

我们操作数据库的时候,必不可少地要写连接字符串,其中包括设置用户名,密码,服务器名等等……还要执行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,是不是很方便呢?