【问题标题】:C# Sqlite Foreign KeysC# Sqlite 外键
【发布时间】:2016-06-13 23:50:30
【问题描述】:

我的代码有问题,我想打开外键,但收到错误消息。 我正在使用与 nuget 一起安装的 SQLitePCL,并为 UWP 添加了 SQLite 作为参考。

    protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                var parameter = e.Parameter as string; 

                if (parameter != null && parameter.Equals("new"))
                {
                    SQLiteConnection dbConnection = new SQLiteConnection("New.db"); 
                         string Head_Create = @"CREATE TABLE IF NOT EXISTS Head
                                                                (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
                                                                , A TEXT
                                                                , B TEXT
                                                                , C TEXT
                                                                , D TEXT
                                                                , E TEXT                                               
                                                                );";

ISQLiteStatement cnStatement_Head1 = dbConnection.Prepare(Head_Create);
cnStatement_Head1.Step();

string SQLite_Metrados_Head_Pragma = @"PRAGMA foreign_keys = ON";             
ISQLiteStatement cnStatement_Head2 = dbConnection.Prepare(SQLite_Metrados_Head_Pragma);
cnStatement_Head2.Step();

我在该行中得到了错误:

ISQLiteStatement cnStatement_Head2 = dbConnection.Prepare(SQLite_Metrados_Head_Pragma);

附加信息:无法准备sql语句:PRAGMA foreign_keys = ON 详细信息:“PRAGMA foreign_keys”附近:语法错误

这似乎是一个语法错误,但我正在为外键编写正确的字符串,我正在使用字符串进行测试:

@"PRAGMA foreign_keys = ON;"

但它也会出错。

感谢您对我的字符串(或在 sqlite 中打开外键的正确字符串)的任何帮助。

【问题讨论】:

  • 感谢您的回复,我的 SQLitePCL 版本是 3.8.7.2,数据库是使用 CREATE 创建的。

标签: c# sqlite foreign-keys uwp


【解决方案1】:
near "PRAGMA foreign_keys": syntax error

“near”后面的引用应该是一个单词。所以在这种情况下,空格字符实际上不是普通的空格字符,而是其他的东西,比如不间断的空格。

【讨论】:

  • 正确!这是我可以复制问题的唯一方法 :-) string SQLite_Metrados_Head_Pragma = "PRAGMA^foreign_keys = ON".Replace('^', (char)0XA0); 实际上,即使使用较旧的 sqlite 版本(不支持外键)也不会引发异常。
猜你喜欢
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2012-09-02
  • 2014-01-17
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多