2016-06-13 3 views
0

У меня проблема с моим кодом, я хочу включить внешние ключи, но я получил сообщения об ошибках. Я использую SQLitePCL, установленный с nuget, и я добавил SQLite для UWP в качестве ссылки.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: ПРАГМА foreign_keys = ON Подробности: рядом с "Прагма foreign_keys": ошибка синтаксиса

Похоже на синтаксическую ошибку, но я пишу правильную строку для чужих чуваков, я тестировал строку:

@"PRAGMA foreign_keys = ON;" 

Но это также вызывает ошибку.

Приветствуется любая помощь с моей строкой (или правильная строка для включения внешних ключей в sqlite).

+0

Thx для вашего ответа, моя версия SQLitePCL 3.8.7.2, и база данных создается с использованием CREATE. – Julius

ответ

1
near "PRAGMA foreign_keys": syntax error 

Статья, процитированная после слова «рядом», должна быть одним словом. Таким образом, в этом случае символ пробела на самом деле не является нормальным пространственным символом, а чем-то другим, например неразрывным пространством.

+0

Правильно! Это единственный способ реплицировать проблему :-) 'string SQLite_Metrados_Head_Pragma =" PRAGMA^foreign_keys = ON ".Replace ('^', (char) 0XA0);' Фактически, даже с более старой версией sqlite (не поддерживающей внешние ключи) исключение не выбрасывается. –

Смежные вопросы