Mono.Data.Sqlite синтаксис - PullRequest
       1

Mono.Data.Sqlite синтаксис

0 голосов
/ 17 октября 2011

Мне нужно использовать Sqlite, но есть проблема с моим синтаксисом (ну, это то, что говорит мне Исключение ...), Вот мой код:

using System;
using System.Data;
using Mono.Data.Sqlite;

class MainClass
{
    public static void Main (string[] args)
    {           
        string connectionString = "URI=file:SqliteTest.db,version=3";

        SqliteConnection conn = new SqliteConnection(connectionString);
        conn.Open();

        SqliteCommand dbcommand = new SqliteCommand(conn);

        string sql_command = "CREATE TABLE transaction (" +
            "id INTEGER PRIMARY KEY," +
            "datetemps TEXT NOT NULL," +
            "description TEXT NOT NULL);";

        Console.WriteLine(sql_command);

        dbcommand.CommandText = sql_command;
        dbcommand.ExecuteNonQuery();

        dbcommand.Dispose();
        conn.Close();
    }
}

Вот исключение, которое я получаю:

Unhandled Exception: Mono.Data.Sqlite.SqliteException: SQLite error
near "transaction": syntax error

Я привык использовать MySql, и я не первый раз работаю с базами данных, но это первый раз, когда у меня возникает такая проблема, я просто не могу понять, в чем проблема, почему существует «Синтаксическая проблема».

Спасибо за ваши советы!

1 Ответ

1 голос
/ 17 октября 2011

Транзакция - зарезервированное ключевое слово в SQLite.Чтобы использовать его в качестве имени объекта, заключите его в одинарные или двойные кавычки, скобки или обратные кавычки:

CREATE TABLE 'transaction' ...
CREATE TABLE "transaction" ...
CREATE TABLE [transaction] ...
CREATE TABLE `transaction` ...

Обратите внимание, что скобки и обратные кавычки не являются стандартным SQL, поэтому обычно рекомендуется использовать кавычки.

Полный список других зарезервированных слов: http://www.sqlite.org/lang_keywords.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...