1. using System;
  2. using System.Collections;
  3. using System.Collections.Specialized;
  4. using System.Data;
  5. using System.Data.OleDb;
  6. namespace Maticsoft.DBUtility
  7. {
  8. /// <summary>
  9. /// 数据访问基础类(基于OleDb)
  10. /// 可以用户可以修改满足自己项目的需要。
  11. /// </summary>
  12. public class DbHelperOleDb
  13. {
  14. //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
  15. public string connectionString = "";
  16.  
  17. public DbHelperOleDb(string conn)
  18. {
  19. this.connectionString = conn;
  20. }
  21.  
  22. #region 公用方法
  23. public bool Exists(string strSql, params OleDbParameter[] cmdParms)
  24. {
  25. object obj = GetSingle(strSql, cmdParms);
  26. int cmdresult;
  27.  
  28. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  29. {
  30. cmdresult = ;
  31. }
  32. else
  33. {
  34. cmdresult = int.Parse(obj.ToString());
  35. }
  36.  
  37. if (cmdresult == )
  38. {
  39. return false;
  40. }
  41. else
  42. {
  43. return true;
  44. }
  45. }
  46. #endregion
  47.  
  48. #region 执行简单SQL语句
  49. /// <summary>
  50. /// 执行SQL语句,返回影响的记录数
  51. /// </summary>
  52. /// <param name="SQLString">SQL语句</param>
  53. /// <returns>影响的记录数</returns>
  54. public int ExecuteSql(string SQLString)
  55. {
  56. using (OleDbConnection connection = new OleDbConnection(connectionString))
  57. {
  58. using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
  59. {
  60. try
  61. {
  62. connection.Open();
  63. int rows = cmd.ExecuteNonQuery();
  64. return rows;
  65. }
  66. catch (System.Data.OleDb.OleDbException E)
  67. {
  68. connection.Close();
  69. throw new Exception(E.Message);
  70. }
  71. }
  72. }
  73. }
  74.  
  75. /// <summary>
  76. /// 执行多条SQL语句,实现数据库事务。
  77. /// </summary>
  78. /// <param name="SQLStringList">多条SQL语句</param>
  79. public void ExecuteSqlTran(ArrayList SQLStringList)
  80. {
  81. using (OleDbConnection conn = new OleDbConnection(connectionString))
  82. {
  83. conn.Open();
  84. OleDbCommand cmd = new OleDbCommand();
  85. cmd.Connection = conn;
  86. OleDbTransaction tx = conn.BeginTransaction();
  87. cmd.Transaction = tx;
  88. try
  89. {
  90. for (int n = ; n < SQLStringList.Count; n++)
  91. {
  92. string strsql = SQLStringList[n].ToString();
  93. if (strsql.Trim().Length > )
  94. {
  95. cmd.CommandText = strsql;
  96. cmd.ExecuteNonQuery();
  97. }
  98. }
  99. tx.Commit();
  100. }
  101. catch (System.Data.OleDb.OleDbException E)
  102. {
  103. tx.Rollback();
  104. throw new Exception(E.Message);
  105. }
  106. }
  107. }
  108.  
  109. /// <summary>
  110. /// 执行带一个存储过程参数的的SQL语句。
  111. /// </summary>
  112. /// <param name="SQLString">SQL语句</param>
  113. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  114. /// <returns>影响的记录数</returns>
  115. public int ExecuteSql(string SQLString, string content)
  116. {
  117. using (OleDbConnection connection = new OleDbConnection(connectionString))
  118. {
  119. OleDbCommand cmd = new OleDbCommand(SQLString, connection);
  120. System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@content", OleDbType.VarChar);
  121. myParameter.Value = content;
  122. cmd.Parameters.Add(myParameter);
  123. try
  124. {
  125. connection.Open();
  126. int rows = cmd.ExecuteNonQuery();
  127. return rows;
  128. }
  129. catch (System.Data.OleDb.OleDbException E)
  130. {
  131. throw new Exception(E.Message);
  132. }
  133. finally
  134. {
  135. cmd.Dispose();
  136. connection.Close();
  137. }
  138. }
  139. }
  140.  
  141. /// <summary>
  142. /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  143. /// </summary>
  144. /// <param name="strSQL">SQL语句</param>
  145. /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  146. /// <returns>影响的记录数</returns>
  147. public int ExecuteSqlInsertImg(string strSQL, byte[] fs)
  148. {
  149. using (OleDbConnection connection = new OleDbConnection(connectionString))
  150. {
  151. OleDbCommand cmd = new OleDbCommand(strSQL, connection);
  152. System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@fs", OleDbType.Binary);
  153. myParameter.Value = fs;
  154. cmd.Parameters.Add(myParameter);
  155. try
  156. {
  157. connection.Open();
  158. int rows = cmd.ExecuteNonQuery();
  159. return rows;
  160. }
  161. catch (System.Data.OleDb.OleDbException E)
  162. {
  163. throw new Exception(E.Message);
  164. }
  165. finally
  166. {
  167. cmd.Dispose();
  168. connection.Close();
  169. }
  170. }
  171. }
  172.  
  173. /// <summary>
  174. /// 执行一条计算查询结果语句,返回查询结果(object)。
  175. /// </summary>
  176. /// <param name="SQLString">计算查询结果语句</param>
  177. /// <returns>查询结果(object)</returns>
  178. public object GetSingle(string SQLString)
  179. {
  180. using (OleDbConnection connection = new OleDbConnection(connectionString))
  181. {
  182. using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))
  183. {
  184. try
  185. {
  186. connection.Open();
  187. object obj = cmd.ExecuteScalar();
  188. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  189. {
  190. return null;
  191. }
  192. else
  193. {
  194. return obj;
  195. }
  196. }
  197. catch (System.Data.OleDb.OleDbException e)
  198. {
  199. connection.Close();
  200. throw new Exception(e.Message);
  201. }
  202. }
  203. }
  204. }
  205.  
  206. /// <summary>
  207. /// 执行查询语句,返回OleDbDataReader
  208. /// </summary>
  209. /// <param name="strSQL">查询语句</param>
  210. /// <returns>OleDbDataReader</returns>
  211. public OleDbDataReader ExecuteReader(string strSQL)
  212. {
  213. OleDbConnection connection = new OleDbConnection(connectionString);
  214. OleDbCommand cmd = new OleDbCommand(strSQL, connection);
  215. try
  216. {
  217. connection.Open();
  218. OleDbDataReader myReader = cmd.ExecuteReader();
  219. return myReader;
  220. }
  221. catch (System.Data.OleDb.OleDbException e)
  222. {
  223. throw new Exception(e.Message);
  224. }
  225. }
  226.  
  227. /// <summary>
  228. /// 执行查询语句,返回DataSet
  229. /// </summary>
  230. /// <param name="SQLString">查询语句</param>
  231. /// <returns>DataSet</returns>
  232. public DataSet Query(string SQLString)
  233. {
  234. using (OleDbConnection connection = new OleDbConnection(connectionString))
  235. {
  236. DataSet ds = new DataSet();
  237. try
  238. {
  239. connection.Open();
  240. OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);
  241. command.Fill(ds, "ds");
  242. }
  243. catch (System.Data.OleDb.OleDbException ex)
  244. {
  245. throw new Exception(ex.Message);
  246. }
  247. return ds;
  248. }
  249. }
  250. #endregion
  251.  
  252. #region 执行带参数的SQL语句
  253. /// <summary>
  254. /// 执行SQL语句,返回影响的记录数
  255. /// </summary>
  256. /// <param name="SQLString">SQL语句</param>
  257. /// <returns>影响的记录数</returns>
  258. public int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
  259. {
  260. using (OleDbConnection connection = new OleDbConnection(connectionString))
  261. {
  262. using (OleDbCommand cmd = new OleDbCommand())
  263. {
  264. try
  265. {
  266. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  267. int rows = cmd.ExecuteNonQuery();
  268. cmd.Parameters.Clear();
  269. return rows;
  270. }
  271. catch (System.Data.OleDb.OleDbException E)
  272. {
  273. throw new Exception(E.Message);
  274. }
  275. }
  276. }
  277. }
  278.  
  279. /// <summary>
  280. /// 执行多条SQL语句,实现数据库事务。
  281. /// </summary>
  282. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的OleDbParameter[])</param>
  283. public void ExecuteSqlTran(Hashtable SQLStringList)
  284. {
  285. using (OleDbConnection conn = new OleDbConnection(connectionString))
  286. {
  287. conn.Open();
  288. using (OleDbTransaction trans = conn.BeginTransaction())
  289. {
  290. OleDbCommand cmd = new OleDbCommand();
  291. try
  292. {
  293. //循环
  294. foreach (DictionaryEntry myDE in SQLStringList)
  295. {
  296. string cmdText = myDE.Key.ToString();
  297. OleDbParameter[] cmdParms = (OleDbParameter[])myDE.Value;
  298. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  299. int val = cmd.ExecuteNonQuery();
  300. cmd.Parameters.Clear();
  301. }
  302. trans.Commit();
  303. }
  304. catch
  305. {
  306. trans.Rollback();
  307. throw;
  308. }
  309. }
  310. }
  311. }
  312.  
  313. /// <summary>
  314. /// 执行一条计算查询结果语句,返回查询结果(object)。
  315. /// </summary>
  316. /// <param name="SQLString">计算查询结果语句</param>
  317. /// <returns>查询结果(object)</returns>
  318. public object GetSingle(string SQLString, params OleDbParameter[] cmdParms)
  319. {
  320. using (OleDbConnection connection = new OleDbConnection(connectionString))
  321. {
  322. using (OleDbCommand cmd = new OleDbCommand())
  323. {
  324. try
  325. {
  326. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  327. object obj = cmd.ExecuteScalar();
  328. cmd.Parameters.Clear();
  329. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  330. {
  331. return null;
  332. }
  333. else
  334. {
  335. return obj;
  336. }
  337. }
  338. catch (System.Data.OleDb.OleDbException e)
  339. {
  340. throw new Exception(e.Message);
  341. }
  342. }
  343. }
  344. }
  345.  
  346. /// <summary>
  347. /// 执行查询语句,返回OleDbDataReader
  348. /// </summary>
  349. /// <param name="strSQL">查询语句</param>
  350. /// <returns>OleDbDataReader</returns>
  351. public OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)
  352. {
  353. OleDbConnection connection = new OleDbConnection(connectionString);
  354. OleDbCommand cmd = new OleDbCommand();
  355. try
  356. {
  357. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  358. OleDbDataReader myReader = cmd.ExecuteReader();
  359. cmd.Parameters.Clear();
  360. return myReader;
  361. }
  362. catch (System.Data.OleDb.OleDbException e)
  363. {
  364. throw new Exception(e.Message);
  365. }
  366. }
  367.  
  368. /// <summary>
  369. /// 执行查询语句,返回DataSet
  370. /// </summary>
  371. /// <param name="SQLString">查询语句</param>
  372. /// <returns>DataSet</returns>
  373. public DataSet Query(string SQLString, params OleDbParameter[] cmdParms)
  374. {
  375. using (OleDbConnection connection = new OleDbConnection(connectionString))
  376. {
  377. OleDbCommand cmd = new OleDbCommand();
  378. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  379. using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
  380. {
  381. DataSet ds = new DataSet();
  382. try
  383. {
  384. da.Fill(ds, "ds");
  385. cmd.Parameters.Clear();
  386. }
  387. catch (System.Data.OleDb.OleDbException ex)
  388. {
  389. throw new Exception(ex.Message);
  390. }
  391. return ds;
  392. }
  393. }
  394. }
  395.  
  396. private void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
  397. {
  398. if (conn.State != ConnectionState.Open)
  399. conn.Open();
  400. cmd.Connection = conn;
  401. cmd.CommandText = cmdText;
  402. if (trans != null)
  403. cmd.Transaction = trans;
  404. cmd.CommandType = CommandType.Text;//cmdType;
  405. if (cmdParms != null)
  406. {
  407. foreach (OleDbParameter parm in cmdParms)
  408. cmd.Parameters.Add(parm);
  409. }
  410. }
  411. #endregion
  412. }
  413. }

使用实例:

  1. string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\#gklq.mdb;PersistSecurity Info=False";
  2. DbHelperOleDb op = newDbHelperOleDb(connStr); // 初始化实例,需要传入一个连接字符串
  3. /****************************** 执行 一条简单sql语句 ***************************************/
  4. op.ExecuteSql(" insert into art( kh,xm,xb,chj,zhy,shyd ) values('11111', '站战争','男' ,333 ,'计算机','山东' ) ");
  5. /******************************执行事务 ***************************************/
  6. string str1 = "insert into art( kh,xm,xb,chj,zhy,shyd )values( '2222222', '张思','男' ,333 ,'计算机','山东' )";
  7. string str2 = "insert into art( kh,xm,xb,chj,zhy,shyd )values( '3333333', '张思','男' ,333 ,'计算机','山东' )";
  8. ArrayList sqls = newArrayList();
  9. sqls.Add(str1);
  10. sqls.Add(str2);
  11. op.ExecuteSqlTran(sqls);
  12. /****************************** 执行一条 带参数的sql语句 ***************************************/
  13. string str = "insert into art( kh,xm,xb,chj,zhy,shyd )values( @kh,@xm,@xb,@chj,@zhy,@shyd )";
  14. OleDbParameter[] paras = {
  15. newOleDbParameter("@kh", OleDbType.VarChar, ),
  16. new OleDbParameter("@xm", OleDbType.VarChar, ),
  17. newOleDbParameter("@xb", OleDbType.VarChar, ),
  18. };
  19. paras[].Value = "";
  20. paras[].Value = "里斯";
  21. paras[].Value = "女";
  22. int rows = op.ExecuteSql(str, paras);

一个基于ASP.NET(C#)的ACCESS数据库操作类的更多相关文章

  1. Microsoft Access数据库操作类(C#)

    博文介绍的Microsoft Access数据库操作类是C#语言的,可实现对Microsoft Access数据库的增删改查询等操作.并且该操作类可实现对图片的存储,博文的最后附上如何将Image图片 ...

  2. C# ACCESS数据库操作类

    这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...

  3. 自己封装的ASP.NET的MYSQL的数据库操作类

    /** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MyS ...

  4. PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类

    QueryList是一个基于phpQuery的PHP通用列表采集类,得益于phpQuery,让使用QueryList几乎没有任何学习成本,只要会CSS3选择器就可以轻松使用QueryList了,它让P ...

  5. C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

    原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using Sy ...

  6. C#---数据库访问通用类、Access数据库操作类、mysql类 .

    //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System. ...

  7. C# 动软生成器对应的Access数据库操作类DbHelperOleDb

    using System;using System.Collections;using System.Collections.Specialized;using System.Data;using S ...

  8. ASP.NET中防止Access数据库下载

    如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多.这里我们给出几种在ASP.NET下防止Access数据库被下载的方法. 我们这里假设Access数据库名字为 test.mdb. ...

  9. 一个基于PDO的数据库操作类(新) 一个PDO事务实例

    <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...

随机推荐

  1. java &&与||短路的详解

    短路运算符就是我们常用的“&&”.“||”,一般称为“条件操作”. class Logic{    public ststic void main(String[] args){    ...

  2. iOS.Dev.Guru

    1. Ricardo Quesada Cocos2d https://github.com/ricardoquesada http://www.elance.com/s/rquesada/ 2. Je ...

  3. <Linux多线程服务端编程>学习记录

    使用智能指针解决多线程下 类的解析冲突问题 有这样一个场景 使用StockFactory记录Stock的信息  容器是map<string,smart_ptr>; 代码如下: #inclu ...

  4. Windows10(uwp)开发中的侧滑

    还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(Gra ...

  5. 2018.08.29 NOIP模拟 table(拓扑排序+建图优化)

    [描述] 给出一个表格,N 行 M 列,每个格子有一个整数,有些格子是空的.现在需要你 来做出一些调整,使得每行都是非降序的.这个调整只能是整列的移动. [输入] 第一行两个正整数 N 和 M. 接下 ...

  6. hfs快速搭建HTTP文件服务器

    HFS全称为http file server,他是一个专门实现文件共享的工具,通过WWW服务将要共享的目录或文件发布,从而让需要下载者直接通过IE浏览器访问发布的这个共享站点,然后随意下载共享资源.和 ...

  7. Excel获得焦点变色

    1.  点击 Sheet 2. 右键菜单  查看代码 3. 复制如下代码 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Ran ...

  8. AngularJS标准Web业务流程开发框架—1.AngularJS模块以及启动分析

    前言: AngularJS中提到模块是自定义的模块标准,提到这不得不说AngularJS是框架中的老大哥,思想相当的前卫..在这框架满天横行的时代,AngularJS有些思想至今未被超越,当然仁者见仁 ...

  9. go指针的一个小坑

    几乎可以肯定的说,go语言中除了闭包在引用外部变量的时候是传引用的,其他的时候都是传值的.如果你说形参可以定义为指针.好吧,那么告诉你这个指针的值其实是按照传值的方式使用的. 下面看个很浅显的例子: ...

  10. AirplaceLogger源代码解析

    将源代码添加进Eclipse中,右键-->Import-->Existing Projects into Workspace-->选择AirplaceLogger源代码文件夹即可导入 ...