需要注意一些特殊的列名,如果列名是sql server保留的关键字,需要将列名加上中括号[]
public static void BulkUpdate(string tableName, string whereField,
SqlParameter[] sqlParams, SqlConnection conn)
{
try
{
StringBuilder fieldColumns = new StringBuilder();
for (int i=0; i<sqlParams.Length; i++)
{
var colName = sqlParams[i].ParameterName;
if (colName.Substring(1).ToLower() == whereField.ToLower())
{
continue;
}
if (sqlParams[i].Value == null)
sqlParams[i].Value = DBNull.Value;
fieldColumns.Append(",").AppendFormat("{0} = {1}", colName.Substring(1), colName);
}
string updateSql = "UPDATE " + tableName + " Set " +
fieldColumns.ToString().Substring(1) + " WHERE " + whereField + "= @" + whereField + ";";
SqlCommand cmd = new SqlCommand(updateSql, conn);
cmd.Parameters.AddRange(sqlParams);
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
}