繁体   English   中英

具有SQLite和外键的C#

[英]C# with SQLite and foreign key

我想为我们的软件实现一个患者数据库,并且外键声明有问题。 我正在使用带有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. 为了使事情变得更加混乱,你允许申报的主键列的属性(虽然你也可以做到这一点列的列表与外键后)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM