2017-02-28 46 views
2

我對C#SQLite數據庫非常陌生,並且有一些變量要與TimeStamp一起存儲在SQLite數據庫中。 這裏是我的代碼:如何通過C#在SQLite數據庫中寫入變量DateTime值?

DateTime now = DateTime.Now; 
    m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;"); 
    m_dbConnection.Open(); 
    var sql = string.Format("insert into Table (Timestamp) values ({0})", now); 
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); 
    command.ExecuteNonQuery(); 

但我發現了錯誤。我猜,SQLite不支持DateTime。我嘗試將DateTime now轉換爲string,但它仍然不起作用。

DateTime now1 = DateTime.Now; 
    var now = now1.ToString("hh.mm.ss.fff"); 
    m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;"); 
    m_dbConnection.Open(); 
    var sql = string.Format("insert into Table (Timestamp) values ({0})", now); 
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); 
    command.ExecuteNonQuery(); 

我做錯了什麼?

+4

是的,你正在做的事情是錯誤的。使用參數化查詢,您將避免此類問題等等。看看[這裏](http://stackoverflow.com/q/809246/579895)舉例 – Pikoh

回答

2

使用的參數,以避免SQL注入:

var sql = string.Format("insert into Table (Timestamp) values (@now)", now); 
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); 
command.Parameters.AddWithValue("@now",now); 
+2

@Polyfun雖然我同意你應該總是使用參數,但我認爲編輯別人的答案不是要走的路。我寧願發表評論,建議他改變它 – Pikoh

+0

我得到以下錯誤,因爲行 'command.Parameters.Add(「@ now」,now);' CS1503 \t參數2:無法從'字符串'到'System.Data.DbType' – Keshav

+0

@Keshav,編輯,嘗試與AddWithValue – apomene

相關問題