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

函数开始

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Text;

public class SqliteHelper
{
    public static List<string> GenerateInsertStatements(string tableName, List<string> columns, List<List<object>> data)
    {
        List<string> insertStatements = new List<string>();

        foreach (var row in data)
        {
            if (row.Count != columns.Count)
            {
                throw new ArgumentException("The number of columns and data items in a row must match.");
            }

            StringBuilder sb = new StringBuilder();
            sb.Append($"INSERT INTO {tableName} (");

            // Add column names
            sb.Append(string.Join(", ", columns));

            sb.Append(") VALUES (");

            // Add values
            for (int i = 0; i < row.Count; i++)
            {
                if (row[i] is string)
                {
                    sb.Append($"'{row[i]}'");
                }
                else if (row[i] is DateTime)
                {
                    sb.Append($"'{((DateTime)row[i]).ToString("yyyy-MM-dd HH:mm:ss")}'");
                }
                else
                {
                    sb.Append(row[i]);
                }

                if (i < row.Count - 1)
                {
                    sb.Append(", ");
                }
            }

            sb.Append(");");

            insertStatements.Add(sb.ToString());
        }

        return insertStatements;
    }
}

调用方式

csharp 复制代码
class Program
{
    static void Main()
    {
        string tableName = "Users";
        List<string> columns = new List<string> { "Id", "Name", "Age", "CreatedAt" };
        List<List<object>> data = new List<List<object>>
        {
            new List<object> { 1, "Alice", 25, DateTime.Now },
            new List<object> { 2, "Bob", 30, DateTime.Now },
            new List<object> { 3, "Charlie", 35, DateTime.Now }
        };

        List<string> insertStatements = SqliteHelper.GenerateInsertStatements(tableName, columns, data);

        foreach (var sql in insertStatements)
        {
            Console.WriteLine(sql);
        }
    }
}

输出

csharp 复制代码
INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (1, 'Alice', 25, '2023-10-05 12:34:56');
INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (2, 'Bob', 30, '2023-10-05 12:34:56');
INSERT INTO Users (Id, Name, Age, CreatedAt) VALUES (3, 'Charlie', 35, '2023-10-05 12:34:56');
相关推荐
小石潭记丶5 小时前
Django服务开发镜像构建
django·sqlite·pip
江山如画,佳人北望8 小时前
C#程序入门
开发语言·windows·c#
与火星的孩子对话9 小时前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
future14129 小时前
C#每日学习日记
java·学习·c#
军训猫猫头13 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
liulun14 小时前
在浏览器中使用SQLite(官方sqlite3.wasm)
数据库·sqlite·wasm
葬歌倾城1 天前
JSON的缩进格式方式和紧凑格式方式
c#·json
Eiceblue1 天前
使用 C# 发送电子邮件(支持普通文本、HTML 和附件)
开发语言·c#·html·visual studio
小小小小王王王1 天前
hello判断
开发语言·c#
金增辉1 天前
基于C#的OPCServer应用开发,引用WtOPCSvr.dll
c#