日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

.NET MYSQL数据库操作基类( C#源码)

發布時間:2024/1/17 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET MYSQL数据库操作基类( C#源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用MySql.Data.dll,它.Net訪問MySQL數據庫的一個驅動  下載

DbHelperMySql.CS

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using MySql.Data.Types;
using MySql.Data.MySqlClient;

??? /// <summary>
??? /// C#操作MYSQL數據庫基類
??? /// </summary>
??? public abstract class DbHelperMySql
??? {
??????? //數據庫連接字符串(web.config來配置)
??????? public static string connectionString = ConfigurationManager.AppSettings["MyString"];

??????? public DbHelperMySql()
??????? {}

??????? #region? 執行簡單SQL語句

??????? /// <summary>
??????? /// 執行SQL語句,返回影響的記錄數
??????? /// </summary>
??????? /// <param name="SQLString">SQL語句</param>
??????? /// <returns>影響的記錄數</returns>
??????? public static int ExecuteSql(string SQLString)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? connection.Open();
??????????????????????? int rows = cmd.ExecuteNonQuery();
??????????????????????? return rows;
??????????????????? }
??????????????????? catch (MySqlException E)
??????????????????? {
??????????????????????? throw new Exception(E.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行SQL語句,設置命令的執行等待時間
??????? /// </summary>
??????? /// <param name="SQLString"></param>
??????? /// <param name="Times"></param>
??????? /// <returns></returns>
??????? public static int ExecuteSqlByTime(string SQLString, int Times)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? connection.Open();
??????????????????????? cmd.CommandTimeout = Times;
??????????????????????? int rows = cmd.ExecuteNonQuery();
??????????????????????? return rows;
??????????????????? }
??????????????????? catch (MySqlException E)
??????????????????? {
??????????????????????? throw new Exception(E.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行多條SQL語句,實現數據庫事務。
??????? /// </summary>
??????? /// <param name="SQLStringList">多條SQL語句</param>??
??????? public static void ExecuteSqlTran(ArrayList SQLStringList)
??????? {
??????????? using (MySqlConnection conn = new MySqlConnection(connectionString))
??????????? {
??????????????? conn.Open();
??????????????? MySqlCommand cmd = new MySqlCommand();
??????????????? cmd.Connection = conn;
??????????????? MySqlTransaction tx = conn.BeginTransaction();
??????????????? cmd.Transaction = tx;
??????????????? try
??????????????? {
??????????????????? for (int n = 0; n < SQLStringList.Count; n++)
??????????????????? {
??????????????????????? string strsql = SQLStringList[n].ToString();
??????????????????????? if (strsql.Trim().Length > 1)
??????????????????????? {
??????????????????????????? cmd.CommandText = strsql;
??????????????????????????? cmd.ExecuteNonQuery();
??????????????????????? }
??????????????????? }
??????????????????? tx.Commit();
??????????????? }
??????????????? catch (MySqlException E)
??????????????? {
??????????????????? tx.Rollback();
??????????????????? throw new Exception(E.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? cmd.Dispose();
??????????????????? conn.Close();
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行帶一個存儲過程參數的的SQL語句。
??????? /// </summary>
??????? /// <param name="SQLString">SQL語句</param>
??????? /// <param name="content">參數內容,比如一個字段是格式復雜的文章,有特殊符號,可以通過這個方式添加</param>
??????? /// <returns>影響的記錄數</returns>
??????? public static int ExecuteSql(string SQLString, string content)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? MySqlCommand cmd = new MySqlCommand(SQLString, connection);
??????????????? MySqlParameter myParameter = new MySqlParameter("@content", MySqlDbType.Text);
??????????????? myParameter.Value = content;
??????????????? cmd.Parameters.Add(myParameter);
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? int rows = cmd.ExecuteNonQuery();
??????????????????? return rows;
??????????????? }
??????????????? catch (MySqlException E)
??????????????? {
??????????????????? throw new Exception(E.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? cmd.Dispose();
??????????????????? connection.Close();
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行帶一個存儲過程參數的的SQL語句。
??????? /// </summary>
??????? /// <param name="SQLString">SQL語句</param>
??????? /// <param name="content">參數內容,比如一個字段是格式復雜的文章,有特殊符號,可以通過這個方式添加</param>
??????? /// <returns>影響的記錄數</returns>
??????? public static object ExecuteSqlGet(string SQLString, string content)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? MySqlCommand cmd = new MySqlCommand(SQLString, connection);
??????????????? MySqlParameter myParameter = new MySqlParameter("@content", MySqlDbType.Text);
??????????????? myParameter.Value = content;
??????????????? cmd.Parameters.Add(myParameter);
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? object obj = cmd.ExecuteScalar();
??????????????????? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
??????????????????? {
??????????????????????? return null;
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? return obj;
??????????????????? }
??????????????? }
??????????????? catch (MySqlException E)
??????????????? {
??????????????????? throw new Exception(E.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? cmd.Dispose();
??????????????????? connection.Close();
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 向數據庫里插入圖像格式的字段(和上面情況類似的另一種實例)
??????? /// </summary>
??????? /// <param name="strSQL">SQL語句</param>
??????? /// <param name="fs">圖像字節,數據庫的字段類型為image的情況</param>
??????? /// <returns>影響的記錄數</returns>
??????? public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? MySqlCommand cmd = new MySqlCommand(strSQL, connection);
??????????????? MySqlParameter myParameter = new MySqlParameter("@fs", MySqlDbType.Binary);
??????????????? myParameter.Value = fs;
??????????????? cmd.Parameters.Add(myParameter);
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? int rows = cmd.ExecuteNonQuery();
??????????????????? return rows;
??????????????? }
??????????????? catch (MySqlException E)
??????????????? {
??????????????????? throw new Exception(E.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? cmd.Dispose();
??????????????????? connection.Close();
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行一條計算查詢結果語句,返回查詢結果(object)。
??????? /// </summary>
??????? /// <param name="SQLString">計算查詢結果語句</param>
??????? /// <returns>查詢結果(object)</returns>
??????? public static object GetSingle(string SQLString)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? connection.Open();
??????????????????????? object obj = cmd.ExecuteScalar();
??????????????????????? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
??????????????????????? {
??????????????????????????? return null;
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? return obj;
??????????????????????? }
??????????????????? }
??????????????????? catch (MySqlException e)
??????????????????? {
??????????????????????? throw new Exception(e.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行查詢語句,返回MySqlDataReader(使用該方法切記要手工關閉MySqlDataReader和連接)
??????? /// </summary>
??????? /// <param name="strSQL">查詢語句</param>
??????? /// <returns>MySqlDataReader</returns>
??????? public static MySqlDataReader ExecuteReader(string strSQL)
??????? {
??????????? MySqlConnection connection = new MySqlConnection(connectionString);
??????????? MySqlCommand cmd = new MySqlCommand(strSQL, connection);
??????????? try
??????????? {
??????????????? connection.Open();
??????????????? MySqlDataReader myReader = cmd.ExecuteReader();
??????????????? return myReader;
??????????? }
??????????? catch (MySqlException e)
??????????? {
??????????????? throw new Exception(e.Message);
??????????? }
??????????? //finally //不能在此關閉,否則,返回的對象將無法使用
??????????? //{
??????????? //?cmd.Dispose();
??????????? //?connection.Close();
??????????? //}?


??????? }

??????? /// <summary>
??????? /// 執行查詢語句,返回DataSet
??????? /// </summary>
??????? /// <param name="SQLString">查詢語句</param>
??????? /// <returns>DataSet</returns>
??????? public static DataSet Query(string SQLString)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? DataSet ds = new DataSet();
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? MySqlDataAdapter da = new MySqlDataAdapter(SQLString, connection);
??????????????????? da.Fill(ds);
??????????????? }
??????????????? catch (MySqlException ex)
??????????????? {
??????????????????? connection.Close();
??????????????????? throw new Exception(ex.Message);
??????????????? }
??????????????? finally
??????????????? {????????????????????
??????????????????? connection.Close();
??????????????? }
??????????????? return ds;
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行查詢語句,返回DataSet,設置命令的執行等待時間
??????? /// </summary>
??????? /// <param name="SQLString"></param>
??????? /// <param name="Times"></param>
??????? /// <returns></returns>
??????? public static DataSet Query(string SQLString, int Times)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? DataSet ds = new DataSet();
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
??????????????????? command.SelectCommand.CommandTimeout = Times;
??????????????????? command.Fill(ds, "ds");
??????????????? }
??????????????? catch (MySqlException ex)
??????????????? {
??????????????????? throw new Exception(ex.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? connection.Close();
??????????????? }
??????????????? return ds;
??????????? }
??????? }

??????? /// <summary>
??????? /// 獲取SQL查詢記錄條數
??????? /// </summary>
??????? /// <param name="sqlstr">SQL語句</param>
??????? /// <returns></returns>
??????? public static int GetRowsNum(string SQLString)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? DataSet ds = new DataSet();
??????????????? try
??????????????? {
??????????????????? connection.Open();
??????????????????? MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
??????????????????? command.Fill(ds, "ds");
??????????????????? return ds.Tables[0].Rows.Count;
??????????????? }
??????????????? catch (MySqlException ex)
??????????????? {
??????????????????? throw new Exception(ex.Message);
??????????????? }
??????????????? finally
??????????????? {
??????????????????? connection.Close();
??????????????? }
??????????? }
??????? }

??????? #endregion

??????? #region 執行帶參數的SQL語句

??????? /// <summary>
??????? /// 執行SQL語句,返回影響的記錄數
??????? /// </summary>
??????? /// <param name="SQLString">SQL語句</param>
??????? /// <returns>影響的記錄數</returns>
??????? public static int ExecuteSql(string SQLString, params? Object[] cmdParms)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? using (MySqlCommand cmd = new MySqlCommand())
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? PrepareCommand(cmd, connection, null, SQLString, cmdParms);
??????????????????????? int rows = cmd.ExecuteNonQuery();
??????????????????????? cmd.Parameters.Clear();
??????????????????????? return rows;
??????????????????? }
??????????????????? catch (MySqlException E)
??????????????????? {
??????????????????????? throw new Exception(E.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }


??????? /// <summary>
??????? /// 執行多條SQL語句,實現數據庫事務。
??????? /// </summary>
??????? /// <param name="SQLStringList">SQL語句的哈希表(key為sql語句,value是該語句的 Object[])</param>
??????? public static void ExecuteSqlTran(Hashtable SQLStringList)
??????? {
??????????? using (MySqlConnection conn = new MySqlConnection(connectionString))
??????????? {
??????????????? conn.Open();
??????????????? using (MySqlTransaction trans = conn.BeginTransaction())
??????????????? {
??????????????????? MySqlCommand cmd = new MySqlCommand();
??????????????????? try
??????????????????? {
??????????????????????? //循環
??????????????????????? foreach (DictionaryEntry myDE in SQLStringList)
??????????????????????? {
??????????????????????????? string cmdText = myDE.Key.ToString();
??????????????????????????? Object[] cmdParms = (Object[])myDE.Value;
??????????????????????????? PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
??????????????????????????? int val = cmd.ExecuteNonQuery();
??????????????????????????? cmd.Parameters.Clear();

??????????????????????????? trans.Commit();
??????????????????????? }
??????????????????? }
??????????????????? catch
??????????????????? {
??????????????????????? trans.Rollback();
??????????????????????? throw;
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? conn.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }


??????? /// <summary>
??????? /// 執行一條計算查詢結果語句,返回查詢結果(object)。
??????? /// </summary>
??????? /// <param name="SQLString">計算查詢結果語句</param>
??????? /// <returns>查詢結果(object)</returns>
??????? public static object GetSingle(string SQLString, params? Object[] cmdParms)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? using (MySqlCommand cmd = new MySqlCommand())
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? PrepareCommand(cmd, connection, null, SQLString, cmdParms);
??????????????????????? object obj = cmd.ExecuteScalar();
??????????????????????? cmd.Parameters.Clear();
??????????????????????? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
??????????????????????? {
??????????????????????????? return null;
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? return obj;
??????????????????????? }
??????????????????? }
??????????????????? catch (MySqlException e)
??????????????????? {
??????????????????????? throw new Exception(e.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????? }
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行查詢語句,返回MySqlDataReader (使用該方法切記要手工關閉MySqlDataReader和連接)
??????? /// </summary>
??????? /// <param name="strSQL">查詢語句</param>
??????? /// <returns>MySqlDataReader</returns>
??????? public static MySqlDataReader ExecuteReader(string SQLString, params? Object[] cmdParms)
??????? {
??????????? MySqlConnection connection = new MySqlConnection(connectionString);
??????????? MySqlCommand cmd = new MySqlCommand();
??????????? try
??????????? {
??????????????? PrepareCommand(cmd, connection, null, SQLString, cmdParms);
??????????????? MySqlDataReader myReader = cmd.ExecuteReader();
??????????????? cmd.Parameters.Clear();
??????????????? return myReader;
??????????? }
??????????? catch (MySqlException e)
??????????? {
??????????????? throw new Exception(e.Message);
??????????? }
??????????? //finally //不能在此關閉,否則,返回的對象將無法使用
??????????? //{
??????????? //?cmd.Dispose();
??????????? //?connection.Close();
??????????? //}?

??????? }

??????? /// <summary>
??????? /// 執行查詢語句,返回DataSet
??????? /// </summary>
??????? /// <param name="SQLString">查詢語句</param>
??????? /// <returns>DataSet</returns>
??????? public static DataSet Query(string SQLString, params? Object[] cmdParms)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? MySqlCommand cmd = new MySqlCommand();
??????????????? PrepareCommand(cmd, connection, null, SQLString, cmdParms);
??????????????? using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
??????????????? {
??????????????????? DataSet ds = new DataSet();
??????????????????? try
??????????????????? {
??????????????????????? da.Fill(ds, "ds");
??????????????????????? cmd.Parameters.Clear();
??????????????????? }
??????????????????? catch (MySqlException ex)
??????????????????? {
??????????????????????? throw new Exception(ex.Message);
??????????????????? }
??????????????????? finally
??????????????????? {
??????????????????????? cmd.Dispose();
??????????????????????? connection.Close();
??????????????????? }
??????????????????? return ds;
??????????????? }
??????????? }
??????? }

??????? private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, Object[] cmdParms)
??????? {
??????????? if (conn.State != ConnectionState.Open)
??????????????? conn.Open();
??????????? cmd.Connection = conn;
??????????? cmd.CommandText = cmdText;
??????????? if (trans != null)
??????????????? cmd.Transaction = trans;
??????????? cmd.CommandType = CommandType.Text;//cmdType;
??????????? if (cmdParms != null)
??????????? {


??????????????? foreach (MySqlParameter parameter in cmdParms)
??????????????? {
??????????????????? if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
??????????????????????? (parameter.Value == null))
??????????????????? {
??????????????????????? parameter.Value = DBNull.Value;
??????????????????? }
??????????????????? cmd.Parameters.Add(parameter);
??????????????? }
??????????? }
??????? }

??????? #endregion

??????? #region 存儲過程操作

??????? /// <summary>
??????? /// 執行存儲過程? (使用該方法切記要手工關閉MySqlDataReader和連接)
??????? /// 手動關閉不了,所以少用,MySql.Data組組件還沒解決該問題
??????? /// </summary>
??????? /// <param name="storedProcName">存儲過程名</param>
??????? /// <param name="parameters">存儲過程參數</param>
??????? /// <returns>MySqlDataReader</returns>
??????? public static MySqlDataReader RunProcedure(string storedProcName, Object[] parameters)
??????? {
??????????? MySqlConnection connection = new MySqlConnection(connectionString);
??????????? MySqlDataReader returnReader;
??????????? connection.Open();
??????????? MySqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
??????????? command.CommandType = CommandType.StoredProcedure;
??????????? returnReader = command.ExecuteReader();
??????????? //Connection.Close(); 不能在此關閉,否則,返回的對象將無法使用????????????
??????????? return returnReader;

??????? }

??????? /// <summary>
??????? /// 執行存儲過程
??????? /// </summary>
??????? /// <param name="storedProcName">存儲過程名</param>
??????? /// <param name="parameters">存儲過程參數</param>
??????? /// <param name="tableName">DataSet結果中的表名</param>
??????? /// <returns>DataSet</returns>
??????? public static DataSet RunProcedure(string storedProcName, Object[] parameters, string tableName)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? DataSet dataSet = new DataSet();
??????????????? connection.Open();
??????????????? MySqlDataAdapter sqlDA = new MySqlDataAdapter();
??????????????? sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
??????????????? sqlDA.Fill(dataSet, tableName);
??????????????? connection.Close();
??????????????? return dataSet;
??????????? }
??????? }

??????? public static DataSet RunProcedure(string storedProcName, Object[] parameters, string tableName, int Times)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? DataSet dataSet = new DataSet();
??????????????? connection.Open();
??????????????? MySqlDataAdapter sqlDA = new MySqlDataAdapter();
??????????????? sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
??????????????? sqlDA.SelectCommand.CommandTimeout = Times;
??????????????? sqlDA.Fill(dataSet, tableName);
??????????????? connection.Close();
??????????????? return dataSet;
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行存儲過程?
??????? /// </summary>
??????? /// <param name="storedProcName">存儲過程名</param>
??????? /// <param name="parameters">存儲過程參數</param>
??????? /// <returns></returns>
??????? public static void RunProcedureNull(string storedProcName, Object[] parameters)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {

??????????????? connection.Open();
??????????????? MySqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
??????????????? command.ExecuteNonQuery();
??????????????? connection.Close();
??????????? }
??????? }

??????? /// <summary>
??????? /// 執行
??????? /// </summary>
??????? /// <param name="CommandText">T-SQL語句;例如:"pr_shell 'dir *.exe'"或"select * from sysobjects where?xtype=@xtype"</param>
??????? /// <param name="parameters">SQL參數</param>
??????? /// <returns>返回第一行第一列</returns>
??????? public object ExecuteScaler(string storedProcName, Object[] parameters)
??????? {
??????????? using (MySqlConnection connection = new MySqlConnection(connectionString))
??????????? {
??????????????? object returnObjectValue;
??????????????? connection.Open();
??????????????? MySqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
??????????????? returnObjectValue = command.ExecuteScalar();
??????????????? connection.Close();
??????????????? return returnObjectValue;
??????????? }
??????? }

??????? /// <summary>
??????? /// 構建 SqlCommand 對象(用來返回一個結果集,而不是一個整數值)
??????? /// </summary>
??????? /// <param name="connection">數據庫連接</param>
??????? /// <param name="storedProcName">存儲過程名</param>
??????? /// <param name="parameters">存儲過程參數</param>
??????? /// <returns>SqlCommand</returns>
??????? private static MySqlCommand BuildQueryCommand(MySqlConnection connection, string storedProcName, Object[] parameters)
??????? {
??????????? MySqlCommand command = new MySqlCommand(storedProcName, connection);
??????????? command.CommandType = CommandType.StoredProcedure;
??????????? foreach (MySqlParameter parameter in parameters)
??????????? {
??????????????? if (parameter != null)
??????????????? {
??????????????????? // 檢查未分配值的輸出參數,將其分配以DBNull.Value.
??????????????????? if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
??????????????????????? (parameter.Value == null))
??????????????????? {
??????????????????????? parameter.Value = DBNull.Value;
??????????????????? }
??????????????????? command.Parameters.Add(parameter);
??????????????? }
??????????? }

??????????? return command;
??????? }

??????? /// <summary>
??????? /// 創建 MySqlCommand 對象實例(用來返回一個整數值)?
??????? /// </summary>
??????? /// <param name="storedProcName">存儲過程名</param>
??????? /// <param name="parameters">存儲過程參數</param>
??????? /// <returns>MySqlCommand 對象實例</returns>
??????? private static MySqlCommand BuildIntCommand(MySqlConnection connection, string storedProcName, Object[] parameters)
??????? {
??????????? MySqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
??????????? command.Parameters.Add(new MySqlParameter("ReturnValue",
??????????????? MySqlDbType.Int32, 4, ParameterDirection.ReturnValue,
??????????????? false, 0, 0, string.Empty, DataRowVersion.Default, null));
??????????? return command;
??????? }

??????? #endregion

??????? /// <summary>
??????? /// MySqlDataReader轉換成DataTable
??????? /// </summary>
??????? /// <param name="dataReader"></param>
??????? /// <returns></returns>
??????? public static DataTable GetNewDataTable(MySqlDataReader dataReader)
??????? {
??????????? DataTable datatable = new DataTable();
??????????? DataTable schemaTable = dataReader.GetSchemaTable();

??????????? //動態添加列
??????????? try
??????????? {
??????????????? foreach (DataRow myRow in schemaTable.Rows)
??????????????? {
??????????????????? DataColumn myDataColumn = new DataColumn();
??????????????????? myDataColumn.DataType = myRow.GetType();
??????????????????? myDataColumn.ColumnName = myRow[0].ToString();
??????????????????? datatable.Columns.Add(myDataColumn);
??????????????? }
??????????????? //添加數據
??????????????? while (dataReader.Read())
??????????????? {
??????????????????? DataRow myDataRow = datatable.NewRow();
??????????????????? for (int i = 0; i < schemaTable.Rows.Count; i++)
??????????????????? {
??????????????????????? myDataRow[i] = dataReader[i].ToString();
??????????????????? }
??????????????????? datatable.Rows.Add(myDataRow);
??????????????????? myDataRow = null;
??????????????? }
??????????????? schemaTable = null;
??????????????? dataReader.Close();
??????????????? return datatable;
??????????? }
??????????? catch (Exception ex)
??????????? {
??????????????? throw new Exception("轉換出錯出錯!", ex);
??????????? }
??????? }
??? }

轉載于:https://www.cnblogs.com/youlechang123/archive/2012/02/27/2369307.html

總結

以上是生活随笔為你收集整理的.NET MYSQL数据库操作基类( C#源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。