2022年多数据库访问 .pdf
《2022年多数据库访问 .pdf》由会员分享,可在线阅读,更多相关《2022年多数据库访问 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1/*/*2*文 件 名:dbbase.cs 3*Copyright(c)2009-2010 4*文件编号:001 5*创 建 人:晴天水族 6*日期:2009-01-23 7*修 改 人:8*修改日期:9*备注描述:数据工厂类 10*支持 ACCESS,SQL SERVER,ORACLE,SQLite 11*/12 导入的命名空间#region 导入的命名空间 13using System;14using System.Data;15using System.Data.SqlClient;16using System.Data.Common;17using System.Configura
2、tion;18using System.Collections;19using System.Text;20using System.Data.SQLite;/添加对 SQLite 数据库的支持 21#endregion 22 23 新建通用的数据库操作命名空间,支持 ACCESS,SQL SERVER,ORACLE,SQLite#region 新建通用的数据库操作命名空间,支持ACCESS,SQL SERVER,ORACLE,SQLite 24namespace dbbase 25 26 27 操作数据库类#region 操作数据库类 28 public class dbbases:IDis
3、posable 29 30 /*/31 /安全类型的集合 32 /33 private static Hashtable parmCache=Hashtable.Synchronized(new Hashtable();34 /*/35 /下面两个是静态变量 36 /37 private static readonly string strs=ConfigurationManager.ConnectionStringsConnLink.ConnectionString;38 private static readonly string pdn=ConfigurationManager.Conn
4、ectionStringsConnLink.ProviderName;39 40 /*/名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 28 页 -41 /属性用于接收数据的存取类型及识别用户所启用的数据库 42 /43 private string providername;44 /*/45 /各种数据库的连接字符串 46 /47 private string connstring;48 49 带参和不带参的构造函数#region 带参和不带参的构造函数 50 /*/51 /默认构造函数,有重载 52 /53 public dbbases()54 55 this.provide
5、rname=pdn;/使用的数据驱动类,默认 56 this.connstring=strs;/连接数据库的字符串,默认 57 58 59 /*/60 /初始构造函数 61 /62/数据驱动类型SqlClient|Access|Orarl|SQLite 63 /数据库的连接字符串 64 public dbbases(string provider,string links)65 66 this.providername=provider;/使用的数据驱动类 67 this.connstring=links;/连接数据库的字符串 68 69#endregion 70 71 /*/72 /析构函数
6、 73 /74 dbbases()75 76 CloseCon();/热行清理 77 78 79 80 /*/81 /检测当前数据库连接状态 82 /83 /名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 28 页 -84 public string isConnstate()85 86 if(cmd!=null)87 88 return cmd.Connection.State.ToString();89 90 return 变量已清除;91 92 93 isclose属性,默认 0 指进行清理,1 为不进行清理,可以用于多次循环之中,避免多次开关数据库#region iscl
7、ose属性,默认 0 指进行清理,1 为不进行清理,可以用于多次循环之中,避免多次开关数据库 94 /*/95 /是否进行各项数据库连接器的清理工作 96 /97 /98 private int isclose=0;99 public int IsClose 100 101 get 102 103 return isclose;104 105 set 106 107 isclose=value;108 109 110#endregion 111 112 分页记录反回变量#region 分页记录反回变量 113 private int allpage=0;/*/分页函数中记录共有多少页的变量11
8、4 public int Allpage 115 116 get return allpage;117 118 119 private int allrecord=0;/*/分页函数中记录菜有数据总量的变量120 public int Allrecord 121 122 get return allrecord;123 124#endregion 125 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 28 页 -126 数据库操作对像的属性Adapter|Command|Begintransaction#region 数据库操作对像的属性Adapter|Command|Begi
9、ntransaction 127 /*/128 /属性 DbDataAdapter 129 /130 private DbDataAdapter adp;131 132 /*/133 /属性 SqlCommand 134 /135 private DbCommand cmd;136 137 /*/138 /事务139 /140 private DbTransaction Tran;141#endregion 142 143 CloseCon()关闭相关的数据库连接#region CloseCon()关闭相关的数据库连接 144 /*/145 /关闭数据库连接146 /147 public vo
10、id CloseCon()148 149 if(cmd!=null)150 151 if(cmd.Connection.State!=ConnectionState.Closed)152 153 cmd.Connection.Close();154 155 cmd.Dispose();156 cmd=null;157 158 159 if(adp!=null)160 161 adp.Dispose();162 adp=null;163 164 165 if(Tran!=null)166 167 Tran.Dispose();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 28 页
11、 -168 Tran=null;169 170 171 /GC.Collect();/强制对所有代进行垃圾回收172 173#endregion 174 175 getFace()创建工厂对像#region getFace()创建工厂对像 176 /*/177 /创建工厂对像178 /179 /DbProviderFactory 180 public DbProviderFactory getFace()181 182 DbProviderFactory fact=null;183 if(providername=System.Data.SQLite)184 185 fact=SQLiteFa
12、ctory.Instance;/SQLite数据库创建数据工厂类186 187 else 188 189 fact=DbProviderFactories.GetFactory(providername);/获得当前所调定的数据源存取类型190 191 return fact;192 193#endregion 194 195 创建 CMD 对像,以供其它对像使用#region 创建 CMD 对像,以供其它对像使用 196 /*/197 /创建 CMD 对像198 /199 /DbComand对像实例 200 private DbCommand CreateDbCommand()201 202
13、 DbProviderFactory fact=getFace();/工厂对像203 DbConnection conn=fact.CreateConnection();/创建 Connection对像204 conn.ConnectionString=connstring;/设定 Connection对像的连接字符串205 cmd=conn.CreateCommand();/使用 conn 的函数CreateCommand()创建 Command 对像名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 28 页 -206 return cmd;/返回 Command 对像207 2
14、08#endregion 209 210 RemoveParames清除CMD的参数及存储过程的参数缓存#region RemoveParames清除 CMD 的参数及存储过程的参数缓存 211 /*/212 /清除参数213 /214 /DbCommand的对像 215 private void RemoveParams(DbCommand cmd)216 217 while(cmd.Parameters.Count 0)218 219 cmd.Parameters.RemoveAt(0);220 221 222 223 /*/224 /从缓存中初使化SQL或存储过程的参数225 /226
15、/Command对像 227 /布尔值 228 public bool initParametersFromCache(DbCommand cmd)229 230 DbParameter parms=GetCachedParameters(string.Format(01,cmd.Connection.ConnectionString,cmd.CommandText);231 if(parms=null)232 return false;233 for(int i=0;i parms.Length;i+)234 235 cmd.Parameters.Add(parms);236 237 ret
16、urn true;238 239 240 public static void CacheParameters(string cacheKey,params DbParameter cmdParms)241 242 parmCachecacheKey=cmdParms;243 244 245 /*/246 /查找缓存中的变量名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 28 页 -247 /248 /缓存名称 249 /DbParameter 250 public DbParameter GetCachedParameters(string cacheKey)251 252 D
17、bParameter cachedParms=(DbParameter)parmCachecacheKey;/parmCache 本程序第18 行,安全类型的HASHtable 253 254 if(cachedParms=null)255 return null;256 257 DbParameter clonedParms=new DbParametercachedParms.Length;258 259 for(int i=0,j=cachedParms.Length;i j;i+)260 261 clonedParms=(DbParameter)(ICloneable)cachedPa
18、rms).Clone();262 263 264 return clonedParms;265 266 267 /*/268 /缓存参数269 /270 /DbCommand 271 public void CachedParameters(DbCommand cmd)272 273 DbParameterCollection paramColl=cmd.Parameters;274 DbParameter parms=new DbParameterparamColl.Count;275 for(int i=0;i paramColl.Count;i+)276 277 parms=paramC
19、oll;278 279 280 CacheParameters(string.Format(01,cmd.Connection.ConnectionString,cmd.CommandText),parms);281 282 283 284#endregion 285 286 ProTxtCmd创建操作存储过程与SQL的 CMD 对像#region ProTxtCmd创建操作存储过程与SQL的 CMD 对像 287 /*/名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 28 页 -288 /创建操作存储过程与SQL的 CMD 对像289 /290 /存储过程或SQL语句 291
20、/识别 ID 292 /cmd 293 private DbCommand ProTxtCmd(string proSqls,Byte sid)294 295 cmd=CreateDbCommand();/创建 CMD 对像296 if(sid=0)297 298 cmd.CommandType=CommandType.Text;/设置 SQL语句299 300 else 301 302 cmd.CommandType=CommandType.StoredProcedure;/设置 cmd 的操作命令方式,此处为存储过程303 304 305 cmd.CommandText=proSqls;/
21、设置存储过程名或SQL语句306 return cmd;307 308#endregion 309 310 executeRunSqlArray 执行多条SQL语句,有事务,批量删除等,传递一个数组#region executeRunSqlArray 执行多条SQL语句,有事务,批量删除等,传递一个数组 311 /*/312 /执行多条SQL语句,有事务313 /314 /SQL语句集合数组 315 /Boolean 316 public bool executeRunSqlArray(string sqllist)317 318 cmd=CreateDbCommand();/创建 CMD 对
22、像319 try 320 321 if(cmd.Connection.State!=ConnectionState.Open)322 323 cmd.Connection.Open();324 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 28 页 -325 Tran=cmd.Connection.BeginTransaction();/新增事务326 cmd.Transaction=Tran;/事务327 for(int i=0;i 1)331 332 cmd.CommandText=sql;333 cmd.ExecuteNonQuery();334 335 336 Tran
23、.Commit();337 338 catch(DbException ex)339 340 Tran.Rollback();341 printEx(ex,1);342 return false;343 344 finally 345 346 if(this.isclose=0)/默认清理347 348 CloseCon();/热行清理349 350 351 352 return true;353 354 355#endregion 356 357 getdt 从 SQL语句或存储过程中返回DataTable#region getdt 从 SQL语句或存储过程中返回DataTable 358
24、/*/359 /返回 SQLS中的 dt 360 /361 /SQL语句 362 /SQL语句参数 363 /识别码,0 为 SQL语句,1 为存储过程 364 /DateTable 365 public DataTable getdt(string sqlsPro,DbParameter parames,int sid)366 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 28 页 -367 DataTable dt=new DataTable();368 DbDataReader dr=null;369 370 if(sid=0)/SQL语句371 372 cmd=ProT
25、xtCmd(sqlsPro,0);373 374 else /存储过程375 376 cmd=ProTxtCmd(sqlsPro,1);377 378 379 if(parames!=null¶mes.Length 0)380 381 foreach(DbParameter param in parames)382 if(param.Value!=null)383 cmd.Parameters.Add(param);384 385 386 try 387 388 if(cmd.Connection.State!=ConnectionState.Open)389 390 cmd.Conn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年多数据库访问 2022 多数 访问
限制150内