///
///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 静态方法}