gpt4 book ai didi

C# 与 SQLite 和外键

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:02 24 4
gpt4 key购买 nike

我想为我们的软件实现一个患者数据库,但外键语句有问题。我在 C# 中使用最新的 SQLite DLL。

当我尝试运行以下代码时:

dbConnection = "Data Source=SQLiteMyDatabase.db;foreign keys=true;";
if (connections == 0)
{
cnn = new SQLiteConnection(dbConnection);
cnn.Open();
this.ExecuteNonQuery("CREATE TABLE IF NOT EXISTS patients ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name VARCHAR(100) NOT NULL;");
this.ExecuteNonQuery("CREATE TABLE IF NOT EXISTS images ( FOREIGN KEY (patientID) REFERENCES patients(id), nameRed VARCHAR(20) NOT NULL PRIMARY KEY;");
}

我得到错误:

SQLite error near "FOREIGN": syntax error

为什么会这样?

最佳答案

为了创建外键,您必须首先创建列:

CREATE TABLE IF NOT EXISTS images (
nameRed VARCHAR(20) NOT NULL PRIMARY KEY,
patientID INT,
FOREIGN KEY (patientID) REFERENCES patients(id)
);

请注意:

  1. 我在创建的列列表中首先移动了主键列 (nameRed),但这只是惯例。它可以排在第二位。
  2. 您使用 VARCHAR 数据类型,SQlite 会接受它,但请注意,它会映射到 TEXT 类型,最大长度将被忽略,您将能够在列中存储其他数据类型。 SQLite 在数据类型方面有点有趣(它有一个经过深思熟虑的系统,但它与大多数其他 SQL 数据库有很大不同)。
  3. 为了让事情变得更加困惑,您可以将 PRIMARY KEY 声明为列的属性(尽管您也可以像 FOREIGN KEY 一样在列列表之后声明)。

关于C# 与 SQLite 和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938281/

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