List转insert:
public static string ListToInsertSql<T>(List<T> list, string table) where T : class
{
StringBuilder sbt = new StringBuilder();
PropertyInfo[] properties = typeof(T).GetProperties();
string colsFiled = string.Join(",", properties.Select(p => p.Name));
string colsValue = string.Join(",", properties.Select(p => string.Format("@{0}", p.Name)));
sbt.AppendFormat("INSERT INTO {0} ({1}) VALUES ", table, colsFiled);
for (int i = 0; i < list.Count; i++)
{
sbt.AppendFormat("({0})", colsValue);
if (i < list.Count - 1)
{
sbt.Append(",");
}
}
return sbt.ToString();
}
datatable转insert:
public static string DataTableToInsertSql(DataTable dataTable, string tableName)
{
var columnNames = string.Join(",", dataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName));
var insertSql = new StringBuilder();
foreach (DataRow row in dataTable.Rows)
{
var values = string.Join(",", row.ItemArray.Select(v => string.Format("'{0}'", v.ToString().Replace("'", "''"))));
insertSql.AppendFormat("INSERT INTO {0} ({1}) VALUES ({2});", tableName, columnNames, values);
}
return insertSql.ToString();
}
JSON转insert(注意性能问题,可以采用更好的方法来处理):
// 定义 JsonData 类来解析 JSON 数据
public class JsonData
{
public List<Dictionary<string, object>> Data { get; set; }
}
// 解析 JSON 数据并生成 Insert 语句
public static string JsonToInsertSql(string json, string tableName)
{
var jsonData = JsonConvert.DeserializeObject<JsonData>(json);
if (jsonData == null || jsonData.Data == null || jsonData.Data.Count == 0)
{
return string.Empty;
}
var columnNames = string.Join(",", jsonData.Data[0].Keys.Select(k => k));
var insertSql = new StringBuilder();
foreach (var row in jsonData.Data)
{
var values = string.Join(",", row.Values.Select(v => string.Format("'{0}'", v.ToString().Replace("'", "''"))));
insertSql.AppendFormat("INSERT INTO {0} ({1}) VALUES ({2});", tableName, columnNames, values);
}
return insertSql.ToString();
}
这篇文章提供了一系列C#方法,用于将List<T>、DataTable和JSON数据转换为数据库的INSERTSQL语句。这些方法利用反射和LINQ处理对象属性,以及序列化和字符串操作将数据转化为SQL语法。注意,JSON转换方法可能存在性能问题,提示可以优化处理。

1182

被折叠的 条评论
为什么被折叠?



