• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

我试图读取SQLite数据库

c/c++ 来源:Wolfgang Roth 12次浏览

我想开一个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行,则时间值看起来是正确的。


===========解决方案如下:

好吧,在互联网上有点研究后,我找到了解决办法。 我用

SQLiteCommand cmd = new SQLiteCommand("select datetime(Timestamp/1000, 'unixepoch'), Timestamp from Averaged", con); 

以获取时间戳列

由于这种方法也适用于该表中的正确日期时间格式,另一个表中这是行不通的。

CREATE TABLE TRIPS (TSDEB INT, TSFIN INT, NBSEC INT, NKMS INT, PRIMARY KEY (TSDEB)) 

虽然列都是int类型,有些人是float类型,但SQLite的DataAdapter的不能确定正确的数据类型在C#DataTable对象使用。所以我得到截断值(28“公里”,而不是28.2​​52“公里”)…

所以我需要更多的帮助!


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)