0
我想開一個SQLite數據庫表,這是像這樣創建時獲得不正確的值long類型的列線,以打開和閱讀該表:我試圖讀取SQLite數據庫
SQLiteConnection con = new SQLiteConnection("Data Source=" + @"d:\_hybridassistant\Backup\hybridassistant.db" + ";Version=2;");
con.Open();
SQLiteCommand cmd = new SQLiteCommand("select * from Averaged", con);
// SQLiteCommand cmd = new SQLiteCommand("select Timestamp+0 as Timestamp, ID , KEY, VALUE, SAMPLES from Averaged", con);
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow dr in ds.Tables[0].Rows)
{
Debug.WriteLine(new DateTime(((long) dr[0])/1000)); // divide by 1000 because timestamp is in milliseconds since 01.01.1970
}
爲SQLiteCommand
返回活動線爲TIMESTAMP
列不正確的值(甚至負值)。如果我使用第二行SQLiteCommand
行,則時間值看起來是正確的。
SQLite是完全能夠存儲一個NET DateTime值。它還有一個選項可將它們存儲爲UnixEpoch值,因此您不必進行任何轉換。 – Plutonix
@Plutonix: 我需要另一種方式。 sqldataadapter爲列返回錯誤的類型(int而不是long) –
.NET SQLite提供程序知道如何將基本SQLIte類型轉換爲.NET數據類型。您沒有利用該功能以DateTime值的長列開始。見** [SQLite的不存儲小數正確(https://stackoverflow.com/q/44298684/1070452)** – Plutonix