///
///MySqlHelper操作類///
public sealed partial classMySQLHelper
{public static readonly string DBConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[""].ToString();///
///批量操作每批次記錄數///
public static int BatchSize = 2000;///
///逾時時間///
public static int CommandTimeOut = 600;///
///初始化MySqlHelper執行個體///
/// 資料庫連接配接字元串
public MySQLHelper(stringconnectionString)
{this.ConnectionString =connectionString;
}///
///資料庫連接配接字元串///
public string ConnectionString { get; set; }#region 執行個體方法
#region ExecuteNonQuery
///
///執行SQL語句,傳回影響的行數///
/// SQL語句
/// 查詢參數
/// 傳回影響的行數
public int ExecuteNonQuery(string commandText, paramsMySqlParameter[] parms)
{returnExecuteNonQuery(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回影響的行數///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回影響的行數
public int ExecuteNonQuery(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteNonQuery(ConnectionString, commandType, commandText, parms);
}#endregion ExecuteNonQuery
#region ExecuteScalar
///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 傳回對象類型
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一行第一列
public T ExecuteScalar(string commandText, paramsMySqlParameter[] parms)
{return ExecuteScalar(ConnectionString, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一行第一列
public object ExecuteScalar(string commandText, paramsMySqlParameter[] parms)
{returnExecuteScalar(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行第一列
public object ExecuteScalar(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteScalar(ConnectionString, commandType, commandText, parms);
}#endregion ExecuteScalar
#region ExecuteDataReader
///
///執行SQL語句,傳回隻讀資料集///
/// SQL語句
/// 查詢參數
/// 傳回隻讀資料集
private MySqlDataReader ExecuteDataReader(string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataReader(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回隻讀資料集///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回隻讀資料集
private MySqlDataReader ExecuteDataReader(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataReader(ConnectionString, commandType, commandText, parms);
}#endregion
#region ExecuteDataRow
///
///執行SQL語句,傳回結果集中的第一行///
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一行
public DataRow ExecuteDataRow(string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataRow(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一行///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行
public DataRow ExecuteDataRow(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataRow(ConnectionString, commandType, commandText, parms);
}#endregion ExecuteDataRow
#region ExecuteDataTable
///
///執行SQL語句,傳回結果集中的第一個資料表///
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一個資料表
public DataTable ExecuteDataTable(string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataTable(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一個資料表
public DataTable ExecuteDataTable(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(ConnectionString, commandType, commandText, parms).Tables[0];
}#endregion ExecuteDataTable
#region ExecuteDataSet
///
///執行SQL語句,傳回結果集///
/// SQL語句
/// 查詢參數
/// 傳回結果集
public DataSet ExecuteDataSet(string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataSet(ConnectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回結果集///
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集
public DataSet ExecuteDataSet(CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataSet(ConnectionString, commandType, commandText, parms);
}#endregion ExecuteDataSet
#region 批量操作
///
///使用MySqlDataAdapter批量更新資料///
/// 資料表
public voidBatchUpdate(DataTable table)
{
BatchUpdate(ConnectionString, table);
}///
///大批量資料插入,傳回成功插入行數///
/// 資料表
/// 傳回成功插入行數
public intBulkInsert(DataTable table)
{returnBulkInsert(ConnectionString, table);
}#endregion 批量操作
#endregion 執行個體方法
#region 靜态方法
private static void PrepareCommand(MySqlCommand command, MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, stringcommandText, MySqlParameter[] parms)
{if (connection.State !=ConnectionState.Open) connection.Open();
command.Connection=connection;
command.CommandTimeout=CommandTimeOut;//設定指令文本(存儲過程名或SQL語句)
command.CommandText =commandText;//配置設定事務
if (transaction != null)
{
command.Transaction=transaction;
}//設定指令類型.
command.CommandType =commandType;if (parms != null && parms.Length > 0)
{//預處理MySqlParameter參數數組,将為NULL的參數指派為DBNull.Value;
foreach (MySqlParameter parameter inparms)
{if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null))
{
parameter.Value=DBNull.Value;
}
}
command.Parameters.AddRange(parms);
}
}#region ExecuteNonQuery
///
///執行SQL語句,傳回影響的行數///
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// 傳回影響的行數
public static int ExecuteNonQuery(string connectionString, string commandText, paramsMySqlParameter[] parms)
{using (MySqlConnection connection = newMySqlConnection(connectionString))
{returnExecuteNonQuery(connection, CommandType.Text, commandText, parms);
}
}///
///執行SQL語句,傳回影響的行數///
/// 資料庫連接配接字元串
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回影響的行數
public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{using (MySqlConnection connection = newMySqlConnection(connectionString))
{returnExecuteNonQuery(connection, commandType, commandText, parms);
}
}///
///執行SQL語句,傳回影響的行數///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回影響的行數
public static int ExecuteNonQuery(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteNonQuery(connection, null, commandType, commandText, parms);
}///
///執行SQL語句,傳回影響的行數///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回影響的行數
public static int ExecuteNonQuery(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteNonQuery(transaction.Connection, transaction, commandType, commandText, parms);
}///
///執行SQL語句,傳回影響的行數///
/// 資料庫連接配接
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回影響的行數
private static int ExecuteNonQuery(MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
MySqlCommand command= newMySqlCommand();
PrepareCommand(command, connection, transaction, commandType, commandText, parms);int retval =command.ExecuteNonQuery();
command.Parameters.Clear();returnretval;
}#endregion ExecuteNonQuery
#region ExecuteScalar
///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 傳回對象類型
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一行第一列
public static T ExecuteScalar(string connectionString, string commandText, paramsMySqlParameter[] parms)
{object result =ExecuteScalar(connectionString, commandText, parms);if (result != null)
{return (T)Convert.ChangeType(result, typeof(T)); ;
}return default(T);
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一行第一列
public static object ExecuteScalar(string connectionString, string commandText, paramsMySqlParameter[] parms)
{using (MySqlConnection connection = newMySqlConnection(connectionString))
{returnExecuteScalar(connection, CommandType.Text, commandText, parms);
}
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 資料庫連接配接字元串
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行第一列
public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{using (MySqlConnection connection = newMySqlConnection(connectionString))
{returnExecuteScalar(connection, commandType, commandText, parms);
}
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行第一列
public static object ExecuteScalar(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteScalar(connection, null, commandType, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行第一列
public static object ExecuteScalar(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteScalar(transaction.Connection, transaction, commandType, commandText, parms);
}///
///執行SQL語句,傳回結果集中的第一行第一列///
/// 資料庫連接配接
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一行第一列
private static object ExecuteScalar(MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
MySqlCommand command= newMySqlCommand();
PrepareCommand(command, connection, transaction, commandType, commandText, parms);object retval =command.ExecuteScalar();
command.Parameters.Clear();returnretval;
}#endregion ExecuteScalar
#region ExecuteDataReader
///
///執行SQL語句,傳回隻讀資料集///
/// 資料庫連接配接
/// SQL語句
/// 查詢參數
/// 傳回隻讀資料集
private static MySqlDataReader ExecuteDataReader(string connectionString, string commandText, paramsMySqlParameter[] parms)
{
MySqlConnection connection= newMySqlConnection(connectionString);return ExecuteDataReader(connection, null, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回隻讀資料集///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回隻讀資料集
private static MySqlDataReader ExecuteDataReader(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
MySqlConnection connection= newMySqlConnection(connectionString);return ExecuteDataReader(connection, null, commandType, commandText, parms);
}///
///執行SQL語句,傳回隻讀資料集///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回隻讀資料集
private static MySqlDataReader ExecuteDataReader(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataReader(connection, null, commandType, commandText, parms);
}///
///執行SQL語句,傳回隻讀資料集///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回隻讀資料集
private static MySqlDataReader ExecuteDataReader(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataReader(transaction.Connection, transaction, commandType, commandText, parms);
}///
///執行SQL語句,傳回隻讀資料集///
/// 資料庫連接配接
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回隻讀資料集
private static MySqlDataReader ExecuteDataReader(MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
MySqlCommand command= newMySqlCommand();
PrepareCommand(command, connection, transaction, commandType, commandText, parms);returncommand.ExecuteReader(CommandBehavior.CloseConnection);
}#endregion
#region ExecuteDataRow
///
///執行SQL語句,傳回結果集中的第一行///
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// ,傳回結果集中的第一行
public static DataRow ExecuteDataRow(string connectionString, string commandText, paramsMySqlParameter[] parms)
{
DataTable dt=ExecuteDataTable(connectionString, CommandType.Text, commandText, parms);return dt.Rows.Count > 0 ? dt.Rows[0] : null;
}///
///執行SQL語句,傳回結果集中的第一行///
/// 資料庫連接配接字元串
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// ,傳回結果集中的第一行
public static DataRow ExecuteDataRow(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
DataTable dt=ExecuteDataTable(connectionString, commandType, commandText, parms);return dt.Rows.Count > 0 ? dt.Rows[0] : null;
}///
///執行SQL語句,傳回結果集中的第一行///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// ,傳回結果集中的第一行
public static DataRow ExecuteDataRow(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
DataTable dt=ExecuteDataTable(connection, commandType, commandText, parms);return dt.Rows.Count > 0 ? dt.Rows[0] : null;
}///
///執行SQL語句,傳回結果集中的第一行///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// ,傳回結果集中的第一行
public static DataRow ExecuteDataRow(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
DataTable dt=ExecuteDataTable(transaction, commandType, commandText, parms);return dt.Rows.Count > 0 ? dt.Rows[0] : null;
}#endregion ExecuteDataRow
#region ExecuteDataTable
///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// 傳回結果集中的第一個資料表
public static DataTable ExecuteDataTable(string connectionString, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(connectionString, CommandType.Text, commandText, parms).Tables[0];
}///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 資料庫連接配接字元串
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一個資料表
public static DataTable ExecuteDataTable(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(connectionString, commandType, commandText, parms).Tables[0];
}///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一個資料表
public static DataTable ExecuteDataTable(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(connection, commandType, commandText, parms).Tables[0];
}///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集中的第一個資料表
public static DataTable ExecuteDataTable(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(transaction, commandType, commandText, parms).Tables[0];
}///
///執行SQL語句,傳回結果集中的第一個資料表///
/// 資料庫連接配接字元串
/// 資料表名稱
/// 傳回結果集中的第一個資料表
public static DataTable ExecuteEmptyDataTable(string connectionString, stringtableName)
{return ExecuteDataSet(connectionString, CommandType.Text, string.Format("select * from {0} where 1=-1", tableName)).Tables[0];
}#endregion ExecuteDataTable
#region ExecuteDataSet
///
///執行SQL語句,傳回結果集///
/// 資料庫連接配接字元串
/// SQL語句
/// 查詢參數
/// 傳回結果集
public static DataSet ExecuteDataSet(string connectionString, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataSet(connectionString, CommandType.Text, commandText, parms);
}///
///執行SQL語句,傳回結果集///
/// 資料庫連接配接字元串
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集
public static DataSet ExecuteDataSet(string connectionString, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{using (MySqlConnection connection = newMySqlConnection(connectionString))
{returnExecuteDataSet(connection, commandType, commandText, parms);
}
}///
///執行SQL語句,傳回結果集///
/// 資料庫連接配接
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集
public static DataSet ExecuteDataSet(MySqlConnection connection, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{return ExecuteDataSet(connection, null, commandType, commandText, parms);
}///
///執行SQL語句,傳回結果集///
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集
public static DataSet ExecuteDataSet(MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{returnExecuteDataSet(transaction.Connection, transaction, commandType, commandText, parms);
}///
///執行SQL語句,傳回結果集///
/// 資料庫連接配接
/// 事務
/// 指令類型(存儲過程,指令文本, 其它.)
/// SQL語句或存儲過程名稱
/// 查詢參數
/// 傳回結果集
private static DataSet ExecuteDataSet(MySqlConnection connection, MySqlTransaction transaction, CommandType commandType, string commandText, paramsMySqlParameter[] parms)
{
MySqlCommand command= newMySqlCommand();
PrepareCommand(command, connection, transaction, commandType, commandText, parms);
MySqlDataAdapter adapter= newMySqlDataAdapter(command);
DataSet ds= newDataSet();
adapter.Fill(ds);if (commandText.IndexOf("@") > 0)
{
commandText=commandText.ToLower();int index = commandText.IndexOf("where");if (index < 0)
{
index= commandText.IndexOf("\nwhere");
}if (index > 0)
{
ds.ExtendedProperties.Add("SQL", commandText.Substring(0, index - 1)); //将擷取的語句儲存在表的一個附屬數組裡,友善更新時生成CommandBuilder
}else{
ds.ExtendedProperties.Add("SQL", commandText); //将擷取的語句儲存在表的一個附屬數組裡,友善更新時生成CommandBuilder
}
}else{
ds.ExtendedProperties.Add("SQL", commandText); //将擷取的語句儲存在表的一個附屬數組裡,友善更新時生成CommandBuilder
}foreach (DataTable dt inds.Tables)
{
dt.ExtendedProperties.Add("SQL", ds.ExtendedProperties["SQL"]);
}
command.Parameters.Clear();returnds;
}#endregion ExecuteDataSet
#region 批量操作
///
///使用MySqlDataAdapter批量更新資料///
/// 資料庫連接配接字元串
/// 資料表
public static void BatchUpdate(stringconnectionString, DataTable table)
{
MySqlConnection connection= newMySqlConnection(connectionString);
MySqlCommand command=connection.CreateCommand();
command.CommandTimeout=CommandTimeOut;
command.CommandType=CommandType.Text;
MySqlDataAdapter adapter= newMySqlDataAdapter(command);
MySqlCommandBuilder commandBulider= newMySqlCommandBuilder(adapter);
commandBulider.ConflictOption=ConflictOption.OverwriteChanges;
MySqlTransaction transaction= null;try{
connection.Open();
transaction=connection.BeginTransaction();//設定批量更新的每次處理條數
adapter.UpdateBatchSize =BatchSize;//設定事物
adapter.SelectCommand.Transaction =transaction;if (table.ExtendedProperties["SQL"] != null)
{
adapter.SelectCommand.CommandText= table.ExtendedProperties["SQL"].ToString();
}
adapter.Update(table);
transaction.Commit();/送出事務
}catch(MySqlException ex)
{if (transaction != null) transaction.Rollback();throwex;
}finally{
connection.Close();
connection.Dispose();
}
}///
///大批量資料插入,傳回成功插入行數///
/// 資料庫連接配接字元串
/// 資料表
/// 傳回成功插入行數
public static int BulkInsert(stringconnectionString, DataTable table)
{if (string.IsNullOrEmpty(table.TableName)) throw new Exception("請給DataTable的TableName屬性附上表名稱");if (table.Rows.Count == 0) return 0;int insertCount = 0;string tmpPath =Path.GetTempFileName();string csv =DataTableToCsv(table);
File.WriteAllText(tmpPath, csv);using (MySqlConnection conn = newMySqlConnection(connectionString))
{
MySqlTransaction tran= null;try{
conn.Open();
tran=conn.BeginTransaction();
MySqlBulkLoader bulk= newMySqlBulkLoader(conn)
{
FieldTerminator= ",",
FieldQuotationCharacter= '"',
EscapeCharacter= '"',
LineTerminator= "\r\n",
FileName=tmpPath,
NumberOfLinesToSkip= 0,
TableName=table.TableName,
};
bulk.Columns.AddRange(table.Columns.Cast().Select(colum =>colum.ColumnName).ToList());
insertCount=bulk.Load();
tran.Commit();
}catch(MySqlException ex)
{if (tran != null) tran.Rollback();throwex;
}
}
File.Delete(tmpPath);returninsertCount;
}///
///将DataTable轉換為标準的CSV///
/// 資料表
/// 傳回标準的CSV
private static stringDataTableToCsv(DataTable table)
{//以半形逗號(即,)作分隔符,列為空也要表達其存在。//列内容如存在半形逗號(即,)則用半角引号(即"")将該字段值包含起來。//列内容如存在半角引号(即")則應替換成半角雙引号("")轉義,并用半角引号(即"")将該字段值包含起來。
StringBuilder sb = newStringBuilder();
DataColumn colum;foreach (DataRow row intable.Rows)
{for (int i = 0; i < table.Columns.Count; i++)
{
colum=table.Columns[i];if (i != 0) sb.Append(",");if (colum.DataType == typeof(string) && row[colum].ToString().Contains(","))
{
sb.Append("\"" + row[colum].ToString().Replace("\"", "\"\"") + "\"");
}elsesb.Append(row[colum].ToString());
}
sb.AppendLine();
}returnsb.ToString();
}#endregion 批量操作
#endregion 靜态方法}