背景+问题:
(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();
}
答案 0 :(得分:5)
在SQL中,您不能在普通标识符中使用#
。
您可以使用的是引用的标识符。
在SQL中,这是通过双引号("Seq#"
)完成的。
MySQL使用单引号('Seq#'
)或反引号(`Seq#`
); SQL Server使用括号([Seq#]
); all these are supported in SQLite for compatibility
如果您不想在使用时引用该名称,请删除#
。