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