我有一個爲新項目創建的SQLite表。SQLiteException「@Param1」語法錯誤附近的SQLite錯誤
表的CREATE和INSERT命令定義如下:
public const string SQL_CREATE = "CREATE TABLE Tanks " +
"(LocID INTEGER, InUse INTEGER, Text1 TEXT, Description1 TEXT);";
public const string SQL_INSERT = "INSERT INTO Tanks " +
"(LocID, InUse, Text1, Description1) " +
"VALUES " +
"@LocID, @InUse, @Text, @Description); ";
每當我試圖給我的第一值保存到表中,我得到了無益的消息,「的SQLite錯誤附近」 @LocID「語法錯誤。」
這裏是我的插入常規:
public static Tank New(Tank tank) {
tank.Result = 0;
using (SQLiteConnection con = GetConnection) {
try {
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand(Tank.SQL_INSERT, con)) {
cmd.Parameters.AddWithValue("@LocID", tank.LocationID); // = 1
cmd.Parameters.AddWithValue("@InUse", tank.InUse); // = 1 (for true)
cmd.Parameters.AddWithValue("@Text", tank.Text); // says "New Tank"
cmd.Parameters.AddWithValue("@Description", DBNull.Value); // I've tried "New Tank" and DBNull.Value
try {
tank.Result = cmd.ExecuteNonQuery();
} catch (SQLiteException err) {
tank.Result = -1;
LogError("New(Tank)", err);
throw err;
}
}
} finally {
con.Close();
}
}
return tank;
}
我沒有創建索引數據庫,因爲文件說,我不是插入的索引值:「每個表的每一行有64每個行的ROWID在同一個表中的所有行中都是唯一的「在同一頁中稍微向下,它表示」如果在插入上未指定ROWID,或者指定的ROWID具有NULL的值,則自動創建適當的ROWID。「來源:sqlite.org/autoinc
錯誤發生在ExecuteNonQuery()
。
我做錯了什麼?
在Win7 Visual Studio 2008(C#)中使用SQLite 3,目標是Windows Mobile 5(Pocket PC)。
對於初學者來看你的插入語句後的值..不應該存在值(,,,)你有什麼參數值傳遞..?請展示坦克的結構。 – MethodMan 2012-01-10 20:44:16