Mono.Data.Sqlite语法

时间:2011-10-16 21:20:47

标签: .net database sqlite mono

我需要使用Sqlite,但我的语法有问题(这就是Exception告诉我的......),这是我的代码:

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,这不是我第一次使用DataBases,但这是我第一次遇到这种问题,我只是想不通问题是什么,为什么会有'语法问题'。

感谢您的提示!

1 个答案:

答案 0 :(得分:1)

Transaction 是SQLite中的保留关键字。要将其用作对象名称,请使用单引号或双引号,括号或反引号将其括起来:

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

请注意,括号和反引号不是标准SQL,因此通常建议使用引号。

有关其他保留字的完整列表:http://www.sqlite.org/lang_keywords.html