You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF(C#/Visual Studio 2022)中绘制SQLite Schema并生成表?

绘制SQLite Schema与生成数据库表的常用方法

一、SQLite Schema 绘制工具

  • SQLiteStudio:自带可视化Schema设计器,拖拽就能创建表、设置字段类型、主键外键,完成后可直接导出建表SQL脚本。
  • DB Browser for SQLite:开源免费工具,有直观的表设计界面,支持可视化编辑表结构,能一键生成对应的建表语句。
  • Visual Studio 扩展工具:安装SQLite/SQL Server Compact Toolbox扩展后,在VS内就能直接设计Schema,同步生成SQL代码,不用切换外部工具。

二、基于Schema生成数据库表的方法

1. 手动编写SQL脚本执行

先根据设计好的Schema写出建表SQL,示例:

CREATE TABLE IF NOT EXISTS Users (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Username TEXT NOT NULL UNIQUE,
    Email TEXT,
    CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS Orders (
    OrderId INTEGER PRIMARY KEY AUTOINCREMENT,
    UserId INTEGER NOT NULL,
    TotalAmount REAL,
    FOREIGN KEY (UserId) REFERENCES Users(Id)
);

然后在C#代码里通过SQLiteConnection执行脚本:

using System.Data.SQLite;

string dbPath = @"C:\YourWpfApp\app_data.db";
using (var conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"))
{
    conn.Open();
    string createTablesSql = "-- 替换为你的建表SQL";
    using (var cmd = new SQLiteCommand(createTablesSql, conn))
    {
        cmd.ExecuteNonQuery();
    }
}

2. 使用ORM框架(高效便捷)

Entity Framework Core (EF Core)

首先安装NuGet包Microsoft.EntityFrameworkCore.Sqlite,然后根据Schema定义实体类:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public DateTime CreateTime { get; set; } = DateTime.Now;
    public List<Order> Orders { get; set; } = new();
}

public class Order
{
    public int OrderId { get; set; }
    public int UserId { get; set; }
    public decimal TotalAmount { get; set; }
    public User User { get; set; }
}

接着创建DbContext:

public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Order> Orders { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Data Source=C:\YourWpfApp\app_data.db");
    }
}

最后生成表:

  • 打开VS的包管理器控制台,执行:
    Add-Migration InitialCreate
    Update-Database
    
  • 或者在WPF启动时自动初始化:
    using (var db = new AppDbContext())
    {
        db.Database.EnsureCreated(); // 数据库不存在则创建,自动生成所有表
    }
    

Dapper(轻量ORM)

Dapper本身不自动生成表,但可以结合Schema生成的SQL脚本快速执行:

using Dapper;
using System.Data.SQLite;

string dbPath = @"C:\YourWpfApp\app_data.db";
using (var conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"))
{
    conn.Open();
    string createTableSql = "CREATE TABLE IF NOT EXISTS Users (...)";
    conn.Execute(createTableSql);
}

3. 动态生成表(适合灵活场景)

如果需要根据动态定义的Schema生成表,可以写一个通用方法:

public void CreateTable(SQLiteConnection conn, string tableName, Dictionary<string, string> columnDefinitions)
{
    var columns = string.Join(", ", columnDefinitions.Select(kv => $"{kv.Key} {kv.Value}"));
    string sql = $"CREATE TABLE IF NOT EXISTS {tableName} ({columns})";
    using (var cmd = new SQLiteCommand(sql, conn))
    {
        cmd.ExecuteNonQuery();
    }
}

// 使用示例
var userColumns = new Dictionary<string, string>
{
    {"Id", "INTEGER PRIMARY KEY AUTOINCREMENT"},
    {"Username", "TEXT NOT NULL UNIQUE"},
    {"Email", "TEXT"}
};

using (var conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"))
{
    conn.Open();
    CreateTable(conn, "Users", userColumns);
}

内容的提问来源于stack exchange,提问作者Jose Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:40:25