基於 Visual Studio 2010 + MySql.Data.dll,構建可復用的 MySQL 數據訪問層:創建 DBUtility 類庫、引用驅動、配置連接字符串、封裝 SQLHelper 核心類(ExecuteNonQuery/ExecuteReader/GetDataSet/ExecuteScalar/參數緩存),並演示 Insert/Delete/Update/Select/存儲過程調用完整代碼。
MySql.Data.dll(NuGet 或官網下載)mysql_installer_community_V5.6.21.1_setup.1415604646.msi解決方案結構:
SQLHelper.csweb.config

<connectionStrings>
<add name="DBConnectionString"
connectionString="Data Source=127.0.0.1;Database=你的數據庫名;User ID=用戶名;Password=密碼"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
public abstract class SQLHelper {
public static readonly string connectionString =
ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
// 1. 執行無返回集命令(Insert/Update/Delete)
public static int ExecuteNonQuery(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { ... }
// 2. 執行返回 DataReader
public static MySqlDataReader ExecuteReader(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { ... }
// 3. 返回 DataSet
public static DataSet GetDataSet(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { ... }
// 4. 返回單值
public static object ExecuteScalar(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { ... }
// 5. 參數緩存
public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters) { ... }
public static MySqlParameter[] GetCachedParameters(string cacheKey) { ... }
// 6. 內部準備命令
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) { ... }
}
注意:MySQL 參數標記為
?參數名,與 SQL Server@參數名、Oracle:參數名不同。SQL 語法大體相通,熟悉一種易遷移。