2016-06-13 63 views
0

我有我的代码有问题,我想打开外键,但我收到错误消息。 我正在使用与nuget一起安装的SQLitePCL,并且我为UWP添加了SQLite作为参考。C#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中的外键)赞赏。

+0

Thx为您的答复,我的SQLitePCL版本是3.8.7.2和数据库创建使用CREATE。 – Julius

回答

1
near "PRAGMA foreign_keys": syntax error 

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

+0

正确!这是我可以复制这个问题的唯一方法:-)'string SQLite_Metrados_Head_Pragma =“PRAGMA^foreign_keys = ON”.Replace('^',(char)0XA0);'实际上,即使是旧的sqlite版本(不支持外部键)不会引发异常。 – 2016-06-14 10:02:06