gpt4 book ai didi

sqlite - LINQPad 在 C# 查询中创建 sqlite 数据库

转载 作者:行者123 更新时间:2023-12-03 17:50:36 25 4
gpt4 key购买 nike

允许使用 SQLite 的 LINQPad 的 IQ Connection 插件有一个“如果丢失则创建数据库”的复选框,但它只会创建一个空文件。无论如何,当文件不存在时自动构建表?

难道不应该有一种获取 DataContext 并使用该接口(interface)创建表的方法吗?希望让 LINQPad 同时更新其 DataContext。

到目前为止,我能做的最好的事情是在删除 sqlite 文件后创建 DbCommand 并在第一次运行时执行它们,然后我必须刷新数据库并再次运行它。

void Main()
{
if (!File.Exists(this.Connection.ConnectionString.Split('=')[1]))
{
"CREATING DATABASE TABLES".Dump();
CREATE_TABLES();
}
else
{
"RUNNING CODE".Dump();
//Code goes here...
}
}

public void CREATE_TABLES()
{
this.Connection.Open();
System.Data.Common.DbCommand sup = this.Connection.CreateCommand();
sup.CommandText = @"create table MainTable
(
MainTableID INTEGER not null PRIMARY KEY AUTOINCREMENT,
FileName nvarchar(500) not null
)";
sup.ExecuteNonQuery();
sup.CommandText = @"create table SubTable
(
SubTableID int not null,
MainTableID int not null,
Count int not null,
primary key (SubTableID, MainTableID),
FOREIGN KEY(MainTableID) REFERENCES MainTable(MainTableID)
)";
//Apparently this version of sqlite doesn't support foreign keys really
sup.ExecuteNonQuery();
this.Connection.Close();
}

最佳答案

只需将查询语言下拉菜单设置为“SQL”,输入 DDL 并按 F5。例如:

PRAGMA foreign_keys = ON
GO

create table Customer
(
ID int not null primary key,
Name nvarchar(30) not null
)
GO

create table Purchase
(
ID int not null primary key,
CustomerID int null references Customer (ID),
Date datetime not null,
Description varchar(30) not null,
Price decimal not null
)

(注意创建外键约束的语法。)

完成后,右键单击架构资源管理器中的连接并选择“刷新”。然后,您可以将查询语言切换回 C# ExpressionC# Statements 并开始以适当的查询语言进行查询:)

关于sqlite - LINQPad 在 C# 查询中创建 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com