c# sqlite 批量生成insert语句的函数

打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数开始
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. public class SqliteHelper
  5. {
  6.     public static List<string> GenerateInsertStatements(string tableName, List<string> columns, List<List<object>> data)
  7.     {
  8.         List<string> insertStatements = new List<string>();
  9.         foreach (var row in data)
  10.         {
  11.             if (row.Count != columns.Count)
  12.             {
  13.                 throw new ArgumentException("The number of columns and data items in a row must match.");
  14.             }
  15.             StringBuilder sb = new StringBuilder();
  16.             sb.Append($"INSERT INTO {tableName} (");
  17.             // Add column names
  18.             sb.Append(string.Join(", ", columns));
  19.             sb.Append(") VALUES (");
  20.             // Add values
  21.             for (int i = 0; i < row.Count; i++)
  22.             {
  23.                 if (row[i] is string)
  24.                 {
  25.                     sb.Append($"'{row[i]}'");
  26.                 }
  27.                 else if (row[i] is DateTime)
  28.                 {
  29.                     sb.Append($"'{((DateTime)row[i]).ToString("yyyy-MM-dd HH:mm:ss")}'");
  30.                 }
  31.                 else
  32.                 {
  33.                     sb.Append(row[i]);
  34.                 }
  35.                 if (i < row.Count - 1)
  36.                 {
  37.                     sb.Append(", ");
  38.                 }
  39.             }
  40.             sb.Append(");");
  41.             insertStatements.Add(sb.ToString());
  42.         }
  43.         return insertStatements;
  44.     }
  45. }
复制代码
调用方式
  1. class Program
  2. {
  3.     static void Main()
  4.     {
  5.         string tableName = "Users";
  6.         List<string> columns = new List<string> { "Id", "Name", "Age", "CreatedAt" };
  7.         List<List<object>> data = new List<List<object>>
  8.         {
  9.             new List<object> { 1, "Alice", 25, DateTime.Now },
  10.             new List<object> { 2, "Bob", 30, DateTime.Now },
  11.             new List<object> { 3, "Charlie", 35, DateTime.Now }
  12.         };
  13.         List<string> insertStatements = SqliteHelper.GenerateInsertStatements(tableName, columns, data);
  14.         foreach (var sql in insertStatements)
  15.         {
  16.             Console.WriteLine(sql);
  17.         }
  18.     }
  19. }
复制代码
输出
  1. INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (1, 'Alice', 25, '2023-10-05 12:34:56');
  2. INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (2, 'Bob', 30, '2023-10-05 12:34:56');
  3. INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (3, 'Charlie', 35, '2023-10-05 12:34:56');
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表