无法识别的令牌:"#"C#到SQLITE

use*_*405 0 c# sqlite

背景+问题:

(Begginer here)我想用我的c#代码中的列表中的值填充sqlite db.这是从finisarsqlite网站获取的sqlite代码:我通过创建自己的列名称来修改它,如"seq#"等.

但我收到以下错误:"无法识别的令牌#"

也许我的语法已关闭?

码:

             // [snip] - As C# is purely object-oriented the following lines must be put     into a class:

        // We use these three SQLite objects:
        SQLiteConnection sqlite_conn;
        SQLiteCommand sqlite_cmd;
        SQLiteDataReader sqlite_datareader;

        // create a new database connection:
        sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;");

        // open the connection:
        sqlite_conn.Open();

        // create a new SQL command:
        sqlite_cmd = sqlite_conn.CreateCommand();

        // Let the SQLiteCommand object know our SQL-Query:
        sqlite_cmd.CommandText = "CREATE TABLE table1 (Seq# integer primary key, Field integer primary key, Description integer primary key);";

        // Now lets execute the SQL ;D                                                                                  
        sqlite_cmd.ExecuteNonQuery(); <<< ---- This is where Error Occurs !

        // Lets insert something into our new table:
        sqlite_cmd.CommandText = "INSERT INTO table1 (Seq#, Field, Description) VALUES (list[0], list[1], list[2]);";

        // And execute this again ;D
        sqlite_cmd.ExecuteNonQuery();


        // We are ready, now lets cleanup and close our connection:
        sqlite_conn.Close();
    }
Run Code Online (Sandbox Code Playgroud)

CL.*_*CL. 5

在SQL中,您不能使用#普通标识符.

您可以使用的是引用的标识符.在SQL中,这是使用双引号("Seq#")完成的.MySQL使用单引号('Seq#')或反引号(`Seq#`); SQL Server使用了bracket([Seq#]); SQLite支持所有这些以实现兼容性.

如果您不想在使用时引用该名称,请删除该名称#.

  • 我强烈建议不要习惯在变量名,表名,字段名等中使用#等特殊字符. (2认同)