程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#操作Access 2003的一個通用類

C#操作Access 2003的一個通用類

編輯:關於C語言
因為想開發C#(C#培訓+FORM的ENGLISH學習軟件,所以收錄如下代碼:

  001 using System;

  002 using System.Data;

  003 using System.Configuration;

  004 using System.Web;

  005 using System.Web.Security;

  006 using System.Web.UI;

  007 using System.Web.UI.WebControls;

  008 using System.Web.UI.WebControls.WebParts;

  009 using System.Web.UI.HtmlControls;

  010 using System.Data.OleDb;

  011 using System.Collections;

  012 ///

  013 /// AcceHelper的摘要說明

  014 ///

  015 public static class AccessHelper

  016 {

  017 //數據庫連接字符串

  018 public static readonly string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Request.PhysicalApplicationPath + System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

  019 //用於緩存參數的HASH表

  020 private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

  021 ///

  022 /// 給定連接的數據庫用假設參數執行一個sql命令(不返回數據集)

  023 ///

  024 /// 一個有效的連接字符串

  025 /// 存儲過程名稱或者sql命令語句

  026 /// 執行命令所用參數的集合

  027 /// 執行命令所影響的行數

  028 public static int ExecuteNonQuery(string connectionString, string cmdText, params OleDbParameter[] commandParameters)

  029 {

  030 OleDbCommand cmd = new OleDbCommand();

  031 using (OleDbConnection conn = new OleDbConnection(connectionString))

  032 {

  033 PrepareCommand(cmd, conn, null, cmdText, commandParameters);

  034 int val = cmd.ExecuteNonQuery();

  035 cmd.Parameters.Clear();

  036 return val;

  037 }

  038 }

  039 ///

  040 ///用現有的數據庫連接執行一個sql命令(不返回數據集)

  041 ///

  042 ///

  043 ///舉例:

  044 /// int result = ExecuteNonQuery(connString, "PublishOrders", new OleDbParameter("@prodid", 24));

  045 ///

  046 /// 一個現有的數據庫連接

  047 /// 存儲過程名稱或者sql命令語句

  048 /// 執行命令所用參數的集合

  049 /// 執行命令所影響的行數

  050 public static int ExecuteNonQuery(OleDbConnection connection, string cmdText, params OleDbParameter[] commandParameters)

  051 {

  052 OleDbCommand cmd = new OleDbCommand();

  053 PrepareCommand(cmd, connection, null, cmdText, commandParameters);

  054 int val = cmd.ExecuteNonQuery();

  055 cmd.Parameters.Clear();

  056 return val;

  057 }

  058 ///

  059 ///使用現有的SQL事務執行一個sql命令(不返回數據集)

  060 ///

  061 ///

  062 ///舉例:

  063 /// int result = ExecuteNonQuery(trans, "PublishOrders", new OleDbParameter("@prodid", 24));

  064 ///

  065 /// 一個現有的事務

  066 /// 存儲過程名稱或者sql命令語句

  067 /// 執行命令所用參數的集合

  068 /// 執行命令所影響的行數

  069 public static int ExecuteNonQuery(OleDbTransaction trans, string cmdText, params OleDbParameter[] commandParameters)

  070 {

  071 OleDbCommand cmd = new OleDbCommand();

  072 PrepareCommand(cmd, trans.Connection, trans, cmdText, commandParameters);

  073 int val = cmd.ExecuteNonQuery();

  074 cmd.Parameters.Clear();

  075 return val;

  076 }

  077 ///

  078 ///用執行的數據庫連接執行一個返回數據集的sql命令

  079 ///

  080 ///

  081 ///舉例:

  082 /// OleDbDataReader r = ExecuteReader(connString, "PublishOrders", new OleDbParameter("@prodid", 24));

  083 ///

  084 /// 一個有效的連接字符串

  085 /// 存儲過程名稱或者sql命令語句

  086 /// 執行命令所用參數的集合

  087 /// 包含結果的讀取器

  088 public static OleDbDataReader ExecuteReader(string connectionString, string cmdText, params OleDbParameter[] commandParameters)

  089 {

  090 //創建一個SqlCommand對象

  091 OleDbCommand cmd = new OleDbCommand();

  092 //創建一個SqlConnection對象

  093 OleDbConnection conn = new OleDbConnection(connectionString);

  094 //在這裡我們用一個try/catch結構執行sql文本命令/存儲過程,因為如果這個方法產生一個異常我們要關閉連接,因為沒有讀取器存在,

  095 //因此commandBehaviour.CloseConnection就不會執行

  096 try

  097 {

  098 //調用PrepareCommand方法,對SqlCommand對象設置參數

  099 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 ///

  114 ///返回一個DataSet數據集

  115 ///

  116 /// 一個有效的連接字符串

  117 /// 存儲過程名稱或者sql命令語句

  118 /// 執行命令所用參數的集合

  119 /// 包含結果的數據集

  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 ///

  148 ///用指定的數據庫連接字符串執行一個命令並返回一個數據集的第一列

  149 ///

  150 ///

  151 ///例如:

  152 /// Object bj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));

  153 ///

  154 ///一個有效的連接字符串

  155 /// 存儲過程名稱或者sql命令語句

  156 /// 執行命令所用參數的集合

  157 /// 用Convert.To{Type}把類型轉換為想要的

  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 ///

  170 ///用指定的數據庫連接執行一個命令並返回一個數據集的第一列

  171 ///

  172 ///

  173 ///例如:

  174 /// Object bj = ExecuteScalar(connString, "PublishOrders", new OleDbParameter("@prodid", 24));

  175 ///

  176 /// 一個存在的數據庫連接

  177 /// 存儲過程名稱或者sql命令語句

  178 /// 執行命令所用參數的集合

  179 /// 用Convert.To{Type}把類型轉換為想要的

  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 ///

  189 ///將參數集合添加到緩存

  190 ///

  191 /// 添加到緩存的變量

  192 /// 一個將要添加到緩存的sql參數集合

  193 public static void CacheParameters(string cacheKey, params OleDbParameter[] commandParameters)

  194 {

  195 parmCache[cacheKey] = commandParameters;

  196 }

  197 ///

  198 ///找回緩存參數集合

  199 ///

  200 /// 用於找回參數的關鍵字

  201 /// 緩存的參數集合

  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 ///

  213 ///准備執行一個命令

  214 ///

  215 /// sql命令

  216 /// Sql連接

  217 /// Sql事務

  218 /// 命令文本,例如:Select * from Products

  219 /// 執行命令的參數

  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 }


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved