通用数据库访问类(兼容多种数据库)


利用c# 2.0数据库访问工厂重写了一个通用数据库访问类,利用web.config的providerName可轻松切换数据库

web.config文件配置

<appSettings/>
<connectionStrings>
<add name="Provider" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source=" providerName="System.Data.OleDb"/>
<!--<add name="Provier" connectionString="server=local;database=aa;user=sa;pwd=" providerName="System.Data.SqlClient"/>-->
<add name="DataPath" connectionString="~\\App_Data\\xx.mdb"/>
</connectionStrings>

dbhelper.cs

利用c# 2.0数据库访问工厂重写了一个通用数据库访问类,利用web.config的providerName可轻松切换数据库

publicclassDbHelper
2{
3privateDbConnectionConnection;
4privateDbProviderFactoryprovider;
5privateCommandType_CommandType;
6publicCommandTypeCommandType
7{
8get{return_CommandType;}
9set{_CommandType=value;}
10}
11///<summary>
12///初始化Dbconnection对象
13///</summary>
14///<returns></returns>
15privateDbConnectionbuildInitConnection()
16{
17stringconnectionString=ConfigurationManager.ConnectionStrings["Provider"].ConnectionString;
18if(ConfigurationManager.ConnectionStrings["Provider"].ProviderName=="System.Data.OleDb")
19{
20connectionString+=HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["DataPath"].ConnectionString);
21}
22provider=DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings["Provider"].ProviderName);
23Connection=provider.CreateConnection();
24Connection.ConnectionString=connectionString;
25returnConnection;
26
27}
28///<summary>
29///默认构造函数(初始化DbConnection)
30///</summary>
31publicDbHelper()
32{
33buildInitConnection();
34this._CommandType=CommandType.Text;
35}
36///<summary>
37///初始化DbCommand对象
38///</summary>
39///<returns></returns>
40privateDbCommandBuildInitCommand()
41{
42DbCommandCommand=provider.CreateCommand();
43Command.Connection=Connection;
44Command.CommandType=this._CommandType;
45returnCommand;
46}
47///<summary>
48///初始化DbCommand对象
49///</summary>
50///<paramname="commandText">T-Sql语句</param>
51///<returns>DbCommand对象</returns>
52privateDbCommandBuildInitCommand(stringcommandText)
53{
54DbCommandCommand=provider.CreateCommand();
55Command.Connection=Connection;
56Command.CommandType=this._CommandType;
57Command.CommandText=commandText;
58returnCommand;
59}
60///<summary>
61///初始化DbCommand对象
62///</summary>
63///<paramname="commandText">T-Sql语句</param>
64///<paramname="op">DbParameter数组</param>
65///<returns>DbCommand对象</returns>
66privateDbCommandBuildInitCommand(stringcommandText,DbParameter[]op)
67{
68DbCommandCommand=provider.CreateCommand();
69Command.Connection=Connection;
70Command.CommandType=this._CommandType;
71Command.CommandText=commandText;
72foreach(DbParameterpinop)
73{
74Command.Parameters.Add(p);
75}
76returnCommand;
77}
78///<summary>
79///执行T-Sql语句,返回受影响的行数
80///</summary>
81///<paramname="commandText">T-Sql语句</param>
82///<returns></returns>
83publicintExecuteNonQuery(stringcommandText)
84{
85intflagValue;
86DbCommandCommand=BuildInitCommand(commandText);
87Connection.Open();
88flagValue=Command.ExecuteNonQuery();
89Connection.Close();
90returnflagValue;
91}
92///<summary>
93///执行带数的T-Sql语句,返回受影响的行数
94///</summary>
95///<paramname="commandText">T-Sql语句</param>
96///<paramname="op"></param>
97///<returns></returns>
98publicintExecuteNonQuery(stringcommandText,DbParameter[]op)
99{
100intflagValue;
101DbCommandCommand=BuildInitCommand(commandText,op);
102Connection.Open();
103flagValue=Command.ExecuteNonQuery();
104Connection.Close();
105returnflagValue;
106}
107///<summary>
108///执行T-Sql语句,返回第一行第一列
109///</summary>
110///<paramname="commandText">T-Sql语句</param>
111///<returns></returns>
112publicObjectExecuteScalar(stringcommandText)
113{
114DbCommandCommand=BuildInitCommand(commandText);
115Connection.Open();
116objectflagValue=Command.ExecuteScalar();
117Connection.Close();
118returnflagValue;
119}
120///<summary>
121///执行带参数的T-Sql语句,返回第一行第一列
122///</summary>
123///<paramname="commandText">T-Sql语句</param>
124///<paramname="op"></param>
125///<returns></returns>
126publicobjectExecuteScalar(stringcommandText,DbParameter[]op)
127{
128DbCommandCommand=BuildInitCommand(commandText,op);
129Connection.Open();
130objectflagValue=Command.ExecuteScalar();
131Connection.Close();
132returnflagValue;
133}
134///<summary>
135///执行T-Sql语句,返回DbDataReader
136///</summary>
137///<paramname="commandText">T-Sql语句</param>
138///<returns></returns>
139publicDbDataReaderExecuteReader(stringcommandText)
140{
141DbCommandCommand=BuildInitCommand(commandText);
142Connection.Open();
143DbDataReaderReader=Command.ExecuteReader(CommandBehavior.CloseConnection);
144returnReader;
145}
146///<summary>
147///执行带参数的T-Sql语句,返回DbDataReader
148///</summary>
149///<paramname="commandText">T-Sql语句</param>
150///<paramname="op"></param>
151///<returns></returns>
152publicDbDataReaderExecuteReader(stringcommandText,DbParameter[]op)
153{
154DbCommandCommand=BuildInitCommand(commandText,op);
155Connection.Open();
156DbDataReaderReader=Command.ExecuteReader(CommandBehavior.CloseConnection);
157returnReader;
158}
159///<summary>
160///执行T-Sql语句,返回DataSet;
161///</summary>
162///<paramname="commandText"></param>
163///<paramname="tableName"></param>
164///<returns></returns>
165publicDataSetExecuteDataSet(stringcommandText,stringtableName)
166{
167DbDataAdapterAdapter=provider.CreateDataAdapter();
168Adapter.SelectCommand=BuildInitCommand(commandText);
169DataSetDs=newDataSet();
170Connection.Open();
171Adapter.Fill(Ds,tableName);
172Connection.Close();
173returnDs;
174}
175///<summary>
176///执行带参数的T-Sql语句,返回DataSet;
177///</summary>
178///<paramname="commandText"></param>
179///<paramname="op"></param>
180///<paramname="tableName"></param>
181///<returns></returns>
182publicDataSetExecuteDataSet(stringcommandText,DbParameter[]op,stringtableName)
183{
184DbDataAdapterAdapter=provider.CreateDataAdapter();
185Adapter.SelectCommand=BuildInitCommand(commandText,op);
186DataSetDs=newDataSet();
187Connection.Open();
188Adapter.Fill(Ds,tableName);
189Connection.Close();
190returnDs;
191}
192///<summary>
193///执行数据库事务
194///</summary>
195///<paramname="sqlStringList"></param>
196publicvoidExecuteTransaction(System.Collections.ArrayListsqlStringList)
197{
198Connection.Open();
199DbTransactiontran=Connection.BeginTransaction();
200DbCommandCommand=BuildInitCommand();
201Command.Transaction=tran;
202try
203{
204for(inti=0;i<sqlStringList.Count;i++)
205{
206Command.CommandText=sqlStringList[i].ToString();
207Command.ExecuteNonQuery();
208}
209tran.Commit();
210Connection.Close();
211}
212catch(System.Data.Common.DbExceptionE)
213{
214tran.Rollback();
215thrownewException(E.Message);
216}
217}
218}

一个小问题:事务处理函数只能执行纯SQL语句,如果想同时执行纯sql语句和带参的SQL语句,则不行

优质内容筛选与推荐>>
1、MSDN 微软经典视频总汇
2、[NOI2013]矩阵游戏
3、在线文档转换API word,excel,ppt等在线文件转pdf、png
4、INotifyChanged 更改通知和更新数据源
5、JDBC简介及DML、DQL操作


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号