我在SQLite中遇到了一些麻煩。我曾經將「時間」保存爲一個整數,但是現在我想將其作爲一個雙精度值,這導致了一些問題。每當我嘗試新的修補程序時,我都會重新制作數據庫,但它沒有任何作用。每當我嘗試保存時,都會收到錯誤「3列4個值」。當我把它全部改回到int時,它再次正常工作。另外,如果我只是從保存過程中刪除了「time all togeater」,那麼我得到的錯誤是「3列的2個值」。我不知道發生了什麼。真的會佔用兩個值還是什麼?SQLite REAL錯誤
創建表:
sql = "CREATE TABLE Speed (id INTEGER PRIMARY KEY AUTOINCREMENT, LanguageType VARCHAR(20), cardsetNumber INT, time REAL)";
command = new SQLiteCommand(sql, dbConnection);
command.ExecuteNonQuery();
添加到表:
public void SaveSpeed(int cardsetNumber, LanguageType lt, double time)
{
Open();
sql = "insert into Speed (cardsetNumber, LanguageType, time) values (" + cardsetNumber + ", '" + lt + "', " + time + ")";
command = new SQLiteCommand(sql, dbConnection);
command.ExecuteNonQuery();
Close();
}
你的語言環境是什麼?你可以在每種情況下輸出sql的內容嗎?我懷疑你的語言環境使用'''作爲小數點分隔符,並且'double'的值被渲染成類似'0,0'的形式,然後在SQL表達式中將其解釋爲* 2 *值。 –
一旦您確認了我的懷疑,*請*永遠不要通過字符串連接將值插入到SQL字符串中;使用[參數](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue%28v=vs.110%29.aspx)。 –
我來自丹麥,如果這涵蓋了你的問題。有沒有辦法解決? – user3026046