开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1361|回复: 0
收起左侧

[C#图文教程] C#操作访问通用类

[复制链接]

结帖率:33% (1/3)
发表于 2013-2-20 15:00:53 | 显示全部楼层 |阅读模式   上海市上海市
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.Data.OleDb;
  11. using System.Collections;
  12. /// <summary>
  13. /// AcceHelper 的摘要说明
  14. /// </summary>
  15. public static class AccessHelper
  16. {
  17.     //数据库连接字符串
  18.     public static readonly string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Request.PhysicalApplicationPath + System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
  19.     // 用于缓存参数的HASH表
  20.     private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
  21.     /// <summary>
  22.     ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
  23.     /// </summary>
  24.     /// <param name="connectionString">一个有效的连接字符串</param>
  25.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  26.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  27.     /// <returns>执行命令所影响的行数</returns>
  28.     public static int ExecuteNonQuery(string connectionString, string cmdText, params OleDbParameter[] commandParameters)
  29.     {
  30.         OleDbCommand cmd = new OleDbCommand();
  31.         using (OleDbConnection conn = new OleDbConnection(connectionString))
  32.         {
  33.             PrepareCommand(cmd, conn, null, cmdText, commandParameters);
  34.             int val = cmd.ExecuteNonQuery();
  35.             cmd.Parameters.Clear();
  36.             return val;
  37.         }
  38.     }
  39.     /// <summary>
  40.     /// 用现有的数据库连接执行一个sql命令(不返回数据集)
  41.     /// </summary>
  42.     /// <remarks>
  43.     ///举例:  
  44.     ///  int result = ExecuteNonQuery(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
  45.     /// </remarks>
  46.     /// <param name="conn">一个现有的数据库连接</param>
  47.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  48.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  49.     /// <returns>执行命令所影响的行数</returns>
  50.     public static int ExecuteNonQuery(OleDbConnection connection, string cmdText, params OleDbParameter[] commandParameters)
  51.     {
  52.         OleDbCommand cmd = new OleDbCommand();
  53.         PrepareCommand(cmd, connection, null, cmdText, commandParameters);
  54.         int val = cmd.ExecuteNonQuery();
  55.         cmd.Parameters.Clear();
  56.         return val;
  57.     }
  58.     /// <summary>
  59.     ///使用现有的SQL事务执行一个sql命令(不返回数据集)
  60.     /// </summary>
  61.     /// <remarks>
  62.     ///举例:  
  63.     ///  int result = ExecuteNonQuery(trans, "PublishOrders", new OleDbParameter("@prodid", 24));
  64.     /// </remarks>
  65.     /// <param name="trans">一个现有的事务</param>
  66.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  67.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  68.     /// <returns>执行命令所影响的行数</returns>
  69.     public static int ExecuteNonQuery(OleDbTransaction trans, string cmdText, params OleDbParameter[] commandParameters)
  70.     {
  71.         OleDbCommand cmd = new OleDbCommand();
  72.         PrepareCommand(cmd, trans.Connection, trans, cmdText, commandParameters);
  73.         int val = cmd.ExecuteNonQuery();
  74.         cmd.Parameters.Clear();
  75.         return val;
  76.     }
  77.     /// <summary>
  78.     /// 用执行的数据库连接执行一个返回数据集的sql命令
  79.     /// </summary>
  80.     /// <remarks>
  81.     /// 举例:  
  82.     ///  OleDbDataReader r = ExecuteReader(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
  83.     /// </remarks>
  84.     /// <param name="connectionString">一个有效的连接字符串</param>
  85.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  86.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  87.     /// <returns>包含结果的读取器</returns>
  88.     public static OleDbDataReader ExecuteReader(string connectionString, string cmdText, params OleDbParameter[] commandParameters)
  89.     {
  90.         //创建一个SqlCommand对象
  91.         OleDbCommand cmd = new OleDbCommand();
  92.         //创建一个SqlConnection对象
  93.         OleDbConnection conn = new OleDbConnection(connectionString);
  94.         //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
  95.         //因此commandBehaviour.CloseConnection 就不会执行
  96.         try
  97.         {
  98.             //调用 PrepareCommand 方法,对 SqlCommand 对象设置参数
  99.             PrepareCommand(cmd, conn, null, cmdText, commandParameters);
  100.             //调用 SqlCommand  的 ExecuteReader 方法
  101.             OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  102.             //清除参数
  103.             cmd.Parameters.Clear();
  104.             return reader;
  105.         }
  106.         catch
  107.         {
  108.             //关闭连接,抛出异常
  109.             conn.Close();
  110.             throw;
  111.         }
  112.     }
  113.     /// <summary>
  114.     /// 返回一个DataSet数据集
  115.     /// </summary>
  116.     /// <param name="connectionString">一个有效的连接字符串</param>
  117.     /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  118.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  119.     /// <returns>包含结果的数据集</returns>
  120.     public static DataSet ExecuteDataSet(string connectionString, string cmdText, params OleDbParameter[] commandParameters)
  121.     {
  122.         //创建一个SqlCommand对象,并对其进行初始化
  123.         OleDbCommand cmd = new OleDbCommand();
  124.         using (OleDbConnection conn = new OleDbConnection(connectionString))
  125.         {
  126.             PrepareCommand(cmd, conn, null, cmdText, commandParameters);
  127.             //创建SqlDataAdapter对象以及DataSet
  128.             OleDbDataAdapter da = new OleDbDataAdapter(cmd);
  129.             DataSet ds = new DataSet();
  130.             try
  131.             {
  132.                 //填充ds
  133.                 da.Fill(ds);
  134.                 // 清除cmd的参数集合
  135.                 cmd.Parameters.Clear();
  136.                 //返回ds
  137.                 return ds;
  138.             }
  139.             catch
  140.             {
  141.                 //关闭连接,抛出异常
  142.                 conn.Close();
  143.                 throw;
  144.             }
  145.         }
  146.     }
  147.     /// <summary>
  148.     /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
  149.     /// </summary>
  150.     /// <remarks>
  151.     ///例如:  
  152.     ///  Object obj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
  153.     /// </remarks>
  154.     ///<param name="connectionString">一个有效的连接字符串</param>
  155.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  156.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  157.     /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
  158.     public static object ExecuteScalar(string connectionString, string cmdText, params OleDbParameter[] commandParameters)
  159.     {
  160.         OleDbCommand cmd = new OleDbCommand();
  161.         using (OleDbConnection connection = new OleDbConnection(connectionString))
  162.         {
  163.             PrepareCommand(cmd, connection, null, cmdText, commandParameters);
  164.             object val = cmd.ExecuteScalar();
  165.             cmd.Parameters.Clear();
  166.             return val;
  167.         }
  168.     }
  169.     /// <summary>
  170.     /// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
  171.     /// </summary>
  172.     /// <remarks>
  173.     /// 例如:  
  174.     ///  Object obj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));
  175.     /// </remarks>
  176.     /// <param name="conn">一个存在的数据库连接</param>
  177.     /// <param name="commandText">存储过程名称或者sql命令语句</param>
  178.     /// <param name="commandParameters">执行命令所用参数的集合</param>
  179.     /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
  180.     public static object ExecuteScalar(OleDbConnection connection, string cmdText, params OleDbParameter[] commandParameters)
  181.     {
  182.         OleDbCommand cmd = new OleDbCommand();
  183.         PrepareCommand(cmd, connection, null, cmdText, commandParameters);
  184.         object val = cmd.ExecuteScalar();
  185.         cmd.Parameters.Clear();
  186.         return val;
  187.     }
  188.     /// <summary>
  189.     /// 将参数集合添加到缓存
  190.     /// </summary>
  191.     /// <param name="cacheKey">添加到缓存的变量</param>
  192.     /// <param name="cmdParms">一个将要添加到缓存的sql参数集合</param>
  193.     public static void CacheParameters(string cacheKey, params OleDbParameter[] commandParameters)
  194.     {
  195.         parmCache[cacheKey] = commandParameters;
  196.     }
  197.     /// <summary>
  198.     /// 找回缓存参数集合
  199.     /// </summary>
  200.     /// <param name="cacheKey">用于找回参数的关键字</param>
  201.     /// <returns>缓存的参数集合</returns>
  202.     public static OleDbParameter[] GetCachedParameters(string cacheKey)
  203.     {
  204.         OleDbParameter[] cachedParms = (OleDbParameter[])parmCache[cacheKey];
  205.         if (cachedParms == null)
  206.             return null;
  207.         OleDbParameter[] clonedParms = new OleDbParameter[cachedParms.Length];
  208.         for (int i = 0, j = cachedParms.Length; i < j; i++)
  209.             clonedParms =(OleDbParameter[])((ICloneable)cachedParms).Clone();
  210.         return clonedParms;
  211.     }
  212.     /// <summary>
  213.     /// 准备执行一个命令
  214.     /// </summary>
  215.     /// <param name="cmd">sql命令</param>
  216.     /// <param name="conn">Sql连接</param>
  217.     /// <param name="trans">Sql事务</param>
  218.     /// <param name="cmdText">命令文本,例如:Select * from Products</param>
  219.     /// <param name="cmdParms">执行命令的参数</param>
  220.     private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
  221.     {
  222.         //判断连接的状态。如果是关闭状态,则打开
  223.         if (conn.State != ConnectionState.Open)
  224.             conn.Open();
  225.         //cmd属性赋值
  226.         cmd.Connection = conn;
  227.         cmd.CommandText = cmdText;
  228.         //是否需要用到事务处理
  229.         if (trans != null)
  230.             cmd.Transaction = trans;
  231.         cmd.CommandType = CommandType.Text;
  232.         //添加cmd需要的存储过程参数
  233.         if (cmdParms != null)
  234.         {
  235.             foreach (OleDbParameter parm in cmdParms)
  236.                 cmd.Parameters.Add(parm);
  237.         }
  238.     }
  239. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表