ASP.NET2.0通用数据访问类
ADO.NET2.0提出了全新的System.Data.Common命名空间。使WEB开发与后台数据库无关的数据访问代码,让WEB程序在运行的时候决定使用上述哪个提供器,所以性能上无影响。
1:通常的做法是在Web.Config配置中添加连接字符串。如下
<connectionStrings>
<add name="ConnectionString"
connectionString="server=(local)"SQLEXPRESS;database=Dataname;uid=username;pwd=password" providerName="System.Data.SqlClient"/>
</connectionStrings>--这里使用SQL数据提供器
2:这里将添加静态类WebConfiguration.cs 完成对连接字符串和数据提供器的读取
public static class WebConfiguration
{
//使用readonly的好处是可以在构造器中动态设置字段的值
private readonly static string dbConnectionString;
private readonly static string dbProviderName;
static WebConfiguration()
{
//将连接字符串赋值给只读字段dbConnectionString;
dbConnectionString= ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
//将数据提供器赋值给自读字段dbProviderName
dbProviderName= ConfigurationManager.ConnectionStrings["ConnectionString"].ProviderName;
}
public static string DbConnectionString
{
//获取连接字符串
get { return dbConnectionString;}
}
public static string DbProviderName
{
//供应器的类型
get { return dbProviderName; }
}
}
3:创建通用数据访问类GenericDataAccess.cs
1 using System;
2 using System.Data;
3 using System.Data.Common;
4 using System.Configuration;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 /// <summary>
13 /// 通用数据库访问代码
14 /// </summary>
15 public static class GenericDataAccess
16 {
17 static GenericDataAccess()
18 {
19
20 }
21 /// <summary>
22 /// 创建DbCommand对象
23 /// </summary>
24 /// <returns></returns>
25 public static DbCommand CreateCommand()
26 {
27 string dataProviderName = WebConfiguration.DbProviderName;
28 string connectionString = WebConfiguration.DbConnectionString;
29
30 //开发与数据库无关的代码
31 DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);
32 DbConnection conn = factory.CreateConnection();
33 conn.ConnectionString = connectionString;
34 DbCommand comm = conn.CreateCommand();
35 comm.CommandType = CommandType.StoredProcedure;
36 return comm;
37 }
38 /// <summary>
39 /// 执行查询,返回datatable
40 /// </summary>
41 /// <param name="command"></param>
42 /// <returns></returns>
43 public static DataTable ExecuteSelectCommand(DbCommand command)
44 {
45 DataTable table;
46 try
47 {
48 command.Connection.Open();
49 DbDataReader reader = command.ExecuteReader();
50 table = new DataTable();
51 table.Load(reader);
52 reader.Close();
53 }
54 catch (Exception ex)
55 {
56 throw new Exception(ex.Message, ex);
57 }
58 finally
59 {
60 command.Connection.Close();
61 }
62 return table;
63
64 }
65 /// <summary>
66 /// 执行update insert del操作
67 /// </summary>
68 /// <param name="command"></param>
69 /// <returns>返回影响行数</returns>
70 public static int ExecuteNonQuery(DbCommand command)
71 {
72 int affectRows = -1;
73 try
74 {
75 command.Connection.Open();
76 affectRows = command.ExecuteNonQuery();
77 }
78 catch (Exception ex)
79 {
80 throw new Exception(ex.Message, ex);
81 }
82 finally
83 {
84 command.Connection.Close();
85 }
86 return affectRows;
87 }
88 /// <summary>
89 /// 返回第一列第一行
90 /// </summary>
91 /// <param name="command"></param>
92 /// <returns></returns>
93 public static string ExecuteScalar(DbCommand command)
94 {
95 string value = "";
96 try
97 {
98 command.Connection.Open();
99 value = command.ExecuteScalar().ToString();
100
101 }
102 catch (Exception ex)
103 {
104 throw new Exception(ex.Message, ex);
105 }
106 finally
107 {
108 command.Connection.Close();
109 }
110 return value;
111 }
112
113 }
114
好的习惯是将SQL语句写在存储过程中。这个类摘自ASP.NET2.0电子商务开发实战一书。
这个类能够满足基本的数据访问。
转载于:https://www.cnblogs.com/freegarden/archive/2009/09/25/1574044.html
ASP.NET2.0通用数据访问类相关推荐
- ASP.NET2.0中的ClientScriptManager 类用法—如何添加客户端事件!
在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能 ...
- ASP.NET2.0中的ClientScriptManager 类用法—如何添加客户端事件
在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能 ...
- 写一个通用数据访问组件
出处:http://www.csharp-corner.com willsound(翻译) 我收到过好多Email来问我如何用一个通用的数据提供者(data provider)在不失自然数据提供者(n ...
- java 通用组件_写一个通用数据访问组件
出处:http://www.csharp-corner.comwillsound(翻译)我收到过数据库 出处:http://www.csharp-corner.com willsound(翻译) 我收 ...
- 简单程序所需要的简单 asp.net通用数据库访问类
简单程序不需要分层,各页面共用相同的通用数据库访问类即可 using System; using System.Data; using System.Data.SqlClient; namespa ...
- ASP.NET2.0 ObjectDataSource的使用详解(1)
本系列文章将介绍ObjectDataSource的使用,为了内容的完成性,所以虽然简单,但是还是发到首页,不知道行不行 本系列文章主要参考MSDN,ASP.NET快速入门和ASP.NET的文章整理而成 ...
- 深度解析ASP.NET2.0中的Callback机制
callback的一般使用方法还算简单,直接参照msdn的帮助和范例就足够了.但是想要真正用好.用精,或者想开发一些基于callback机制的WEB组件,那么,就要先深入了解callback的实现机制 ...
- asp.net2.0安全性(3)--验证与授权
"验证"与"授权"是对网页资源安全管理的两道门. 验证(Authentication):检查用户是否是合法的用户.就像是网站大门口的保卫,服责验证使用的用户名和 ...
- 开发asp.net2.0手机用网站 点滴[xgluxv]
最近一段时间一直在做一个给手机浏览的网站基于asp.net2.0,现在第一期已经到尾声,说说开发的感想.客户要求只要支持wap2.0的手机都能浏览(我刚开始想他们应该说得是属于智能手机级别的都能浏览, ...
最新文章
- 带括号的中缀表达式转后缀表达式
- 78.Zabbix监控Nginx
- ppt矩形里面的图片怎么放大缩小_ppt 怎么才能做到图片的放大缩小???? 下面有图...
- 计算机二级考试vb内容,计算机二级考试VB重点内容.doc
- Ajax-简单的HelloWorld实例,使用了XMLHttpRequest(two)
- linux中一条命令将文件转换为UTF-8格式-解决乱码
- 计算机网络实用期末试题和答案,计算机网络期末考试试题及答案(1)
- SpringCloud04 服务配置中心、消息总线、远程配置动态刷新
- ajax 请求struts1,jquery ajax +struts1.3
- python小白从哪来开始-老男孩python课程亮点在哪里?python小白
- root权限执行java_执行具有root权限的java代码(一)
- Android中在布局中写ViewPager无法渲染出来的问题
- 计算机学报Latex模板运行出错解决
- 如何高效学习?(个人经验篇)
- 不知道华为手机识别图片文字怎么弄?2个识别方法收好了
- Warshall算法的实现(两种方式)
- 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k
- 在word中输入大于10圆圈内的数
- What are the best ways to learn self discipline?
- php用while循环实现2的n次方,编写程序,使用while循环计算4096是2的几次方,然后输出结果。...
热门文章
- 目标检测学习笔记--DSSD算法
- android考勤系统,Android端实现考勤管理系统
- suse linux 光纤卡重置,SUSE Linux下查看光纤卡号和操作系统的版本
- 如何隐藏system函数的窗口
- 【正一专栏】运动式的创建文明城市要着干嘛
- 对程序错误的处理——Windows核心编程学习手札之一
- 组件赋值——@Value ---@PropertySource(value={“classpath:/person.properties“})
- 给容器中注册组件 || @Scope -- @Lazy -- @Conditional({Condition}) -- @Import--使用Spring提供的 FactoryBean
- js 得到select所有option里的值
- Python 【企鹅号、QQ看点】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、视频号等平台的视频自动化同步发布