ASP.Net2.0 OleDB数据访问模块 (SqlHelper For OleDB)

来源:互联网 发布:random java 编辑:程序博客网 时间:2024/05/18 00:11
  1. using System;
  2. using System.Data;
  3. using System.Data.OleDb;
  4. namespace SqlHelper
  5. {
  6.     public abstract class SqlHelper
  7.     {
  8.         
  9.         public SqlHelper()
  10.         {           
  11.         }
  12.         /// <summary>
  13.         /// 用于执行一段SQL语句,只有三个最简的必要参数,省去了commandtype。
  14.         /// To excute a SQL statement, which reuturns a integer stand for effect line number.
  15.         /// default Command type is text
  16.         /// </summary>
  17.         /// <param name="connString">连接字符串 (Conntection String)</param>
  18.         /// <param name="cmdText">command的字符串 (SQL Statement)</param>
  19.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  20.         /// <returns>返回影响行数 (effect line number)</returns>
  21.         public static int ExecuteNonQuery(string connString, string cmdText, params OleDbParameter[] cmdParms)
  22.         {
  23.             OleDbCommand cmd = new OleDbCommand();
  24.             using (OleDbConnection conn = new OleDbConnection(connString)) 
  25.             {
  26.                 PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
  27.                 
  28.                 int val = cmd.ExecuteNonQuery();
  29.                 cmd.Parameters.Clear();
  30.                 return val;
  31.                 
  32.             }
  33.         }
  34.         /// <summary>
  35.         /// 用于执行一段SQL语句。
  36.         /// To excute a SQL statement, which reuturns a integer stand for effect line number.
  37.         /// </summary>
  38.         /// <param name="connString">连接字符串 (Connection String)</param>
  39.         /// <param name="cmdType">command的字符串 (SQL Statement)</param>
  40.         /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
  41.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  42.         /// <returns>返回影响行数 (effect line number)</returns>
  43.         public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  44.         {
  45.             OleDbCommand cmd = new OleDbCommand();
  46.             using (OleDbConnection conn = new OleDbConnection(connString)) 
  47.             {
  48.                 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  49.                 int val = cmd.ExecuteNonQuery();
  50.                 cmd.Parameters.Clear();
  51.                 return val;
  52.             }
  53.         }
  54.         /// <summary>
  55.         /// 用于执行一段SQL语句。传入的值是connection.
  56.         /// To excute a SQL statement, which reuturns a integer stand for effect line number.
  57.         /// a connection is passed in instead of a connection string
  58.         /// </summary>
  59.         /// <param name="conn">一个以初始化好的OleDbConnection (a Conncection)</param>
  60.         /// <param name="connString">连接字符串 (Conntection String)</param>
  61.         /// <param name="cmdText">command的字符串 (SQL Statement)</param>
  62.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  63.         /// <returns>返回影响行数 (effect line number)</returns>
  64.         public static int ExecuteNonQuery(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  65.         {
  66.             OleDbCommand cmd = new OleDbCommand();
  67.             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  68.             int val = cmd.ExecuteNonQuery();
  69.             cmd.Parameters.Clear();
  70.             return val;
  71.         }
  72.         /// <summary>
  73.         /// 用于执行一段SQL语句。需要传入一个事物Transaction.
  74.         /// To excute a SQL statement, which reuturns a integer stand for effect line number.
  75.         /// a transaction is reqired
  76.         /// </summary>
  77.         /// <param name="trans">一个Trasaction (Trasaction)</param>
  78.         /// <param name="cmdType">command的字符串 (SQL Statement)</param>
  79.         /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
  80.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  81.         /// <returns>返回影响行数 (effect line number)</returns>
  82.         public static int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  83.         {
  84.             OleDbCommand cmd = new OleDbCommand();
  85.             PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
  86.             int val = cmd.ExecuteNonQuery();
  87.             cmd.Parameters.Clear();
  88.             return val;
  89.         }
  90.         /// <summary>
  91.         /// 用于执行一个Select语句返回一个datareader,省略了commandtype参数
  92.         /// To excute a SQL statement, and reuturns a dataReader.
  93.         /// default command type is text
  94.         /// </summary>
  95.         /// <param name="connString">连接字符串 (Conntection String)</param>
  96.         /// <param name="cmdText">command的字符串 (SQL Statement)</param>
  97.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  98.         /// <returns>datareader</returns>
  99.         public static OleDbDataReader ExecuteReader(string connString, string cmdText, params OleDbParameter[] cmdParms) 
  100.         {
  101.             OleDbCommand cmd = new OleDbCommand();
  102.             OleDbConnection conn = new OleDbConnection(connString);
  103.             // we use a try/catch here because if the method throws an exception we want to 
  104.             // close the connection throw code, because no datareader will exist, hence the 
  105.             // commandBehaviour.CloseConnection will not work
  106.             try 
  107.             {
  108.                 PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
  109.                 OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  110.                 //              cmd.Parameters.Clear();
  111.                 return rdr;
  112.             }
  113.             catch
  114.             {
  115.                 conn.Close();
  116.                 throw;
  117.             }
  118.         }
  119.         /// <summary>
  120.         /// 用于执行一个Select语句返回一个datareader
  121.         /// To excute a SQL statement, and reuturns a dataReader.
  122.         /// </summary>
  123.         /// <param name="connString">连接字符串 (Connection String)</param>
  124.         /// <param name="cmdType">command的字符串 (SQL Statement)</param>
  125.         /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
  126.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  127.         /// <returns>dataReader</returns>
  128.         public static OleDbDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  129.         {
  130.             OleDbCommand cmd = new OleDbCommand();
  131.             OleDbConnection conn = new OleDbConnection(connString);
  132.             // we use a try/catch here because if the method throws an exception we want to 
  133.             // close the connection throw code, because no datareader will exist, hence the 
  134.             // commandBehaviour.CloseConnection will not work
  135.             try 
  136.             {
  137.                 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  138.                 OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  139.                 //              cmd.Parameters.Clear();
  140.                 return rdr;
  141.             }
  142.             catch 
  143.             {
  144.                 conn.Close();
  145.                 throw;
  146.             }
  147.         }
  148.         /// <summary>
  149.         /// 用于读取一个值,查询所返回的是结果集中第一行的第一列,省去了commandtype
  150.         /// To excute a SQL statement, and returns the first column of the first line
  151.         /// Default command type is text
  152.         /// </summary>
  153.         /// <param name="connString">连接字符串 (Conntection String)</param>
  154.         /// <param name="cmdText">command的字符串 (SQL Statement)</param>
  155.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  156.         /// <returns>the first column of the first line</returns>
  157.         public static object ExecuteScalar(string connString, string cmdText, params OleDbParameter[] cmdParms) 
  158.         {
  159.             OleDbCommand cmd = new OleDbCommand();
  160.             using (OleDbConnection conn = new OleDbConnection(connString)) 
  161.             {
  162.                 PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
  163.                 object val = cmd.ExecuteScalar();
  164.                 cmd.Parameters.Clear();
  165.                 return val;
  166.             }
  167.         }
  168.         /// <summary>
  169.         /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
  170.         /// To excute a SQL statement, and returns the first column of the first line
  171.         /// </summary>
  172.         /// <param name="connString">连接字符串 (Connection String)</param>
  173.         /// <param name="cmdType">command的字符串 (SQL Statement)</param>
  174.         /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
  175.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  176.         /// <returns>the first column of the first line</returns>
  177.         public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  178.         {
  179.             OleDbCommand cmd = new OleDbCommand();
  180.             using (OleDbConnection conn = new OleDbConnection(connString)) 
  181.             {
  182.                 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  183.                 object val = cmd.ExecuteScalar();
  184.                 cmd.Parameters.Clear();
  185.                 return val;
  186.             }
  187.         }
  188.         /// <summary>
  189.         /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
  190.         /// To excute a SQL statement, and returns the first column of the first line
  191.         /// a connection is passed in instead of a connection string
  192.         /// </summary>
  193.         /// <param name="conn">一个以初始化好的OleDbConnection (a Conncection)</param>
  194.         /// <param name="connString">连接字符串 (Conntection String)</param>
  195.         /// <param name="cmdText">command的字符串 (SQL Statement)</param>
  196.         /// <param name="cmdParms">参数列表 (Paramters)</param>
  197.         /// <returns>the first column of the first line</returns>
  198.         public static object ExecuteScalar(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms) 
  199.         {
  200.             
  201.             OleDbCommand cmd = new OleDbCommand();
  202.             PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  203.             object val = cmd.ExecuteScalar();
  204.             cmd.Parameters.Clear();
  205.             return val;
  206.         }
  207.         /// <summary>
  208.         /// 在执行SQL语句之前的准备工作
  209.         /// </summary>
  210.         /// <param name="cmd">command</param>
  211.         /// <param name="conn">connection</param>
  212.         /// <param name="trans">trasaction</param>
  213.         /// <param name="cmdType">command类型</param>
  214.         /// <param name="cmdText">command字符串</param>
  215.         /// <param name="cmdParms">参数列表</param>
  216.         private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, string cmdText, OleDbParameter[] cmdParms) 
  217.         {
  218.             if (conn.State != ConnectionState.Open)
  219.                 conn.Open();
  220.             cmd.Connection = conn;
  221.             cmd.CommandText = cmdText;
  222.             if (trans != null)
  223.                 cmd.Transaction = trans;
  224.             cmd.CommandType = cmdType;
  225.             if (cmdParms != null
  226.             {
  227.                 foreach (OleDbParameter parm in cmdParms)
  228.                     cmd.Parameters.Add(parm);
  229.             }
  230.         }
  231.         
  232.     }
  233. }