易截截图软件、单文件、免安装、纯绿色、仅160KB

Sqlite DateTime 类型 读取和写入格式注意的问题

本文转载自 http://www.tntserver.cn/article.asp?id=41
今天遇到个问题.
首先插入一个DataTime格式的数据:
string sql="insert into [table] (date_time) values('" + date_time.ToString() + "'";
执行如上命令.插入没有报告错误.
但是,我又用一条命令读取时:
string sql="select * from [table];
.....
IDataReader dr=cmd.ExecuteReader();
...
object obj=dr["data_time"];//在这里出错了,说是无法转换为DataTime格式,字符串不正确
--------------------------------------------------------------------------------------------
我找了一天的教程,找了一天的google.
答案是:sqlite用的全球时间UTC,要用datetime()函数转换若干.
我也试了,发现好像运行的不像教程上说的那样!
实在没办法,来硬的吧,硬着头皮看源代码吧.
他的继承格式大致如下:
SqliteConvert-->SqliteBase-->Sqlite3
在SqliteConvert中定义了转换格式,上面说的很明白,默认DataTime格式为 ISO8601
然后,SqliteConnection 用到了Sqlite3.
我就研究了SqliteConnection的源代码,发现Sqlite不是用的什么全球的UTC时间.
其实就是用的国际标准ISO 8601标准.
那我就着手看怎么才能让我的程序和sqlite兼容.
我生成的字符串和sqlite的有什么不同.
最后看了msdn上对iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)
给出了字符串示例:
* 2004-05-23T14:25:10
* 2004-05-23T14:25:10.487
而我生成的字符串 data_time.ToString()和他的有一个不同的地方.
就是没有那个T....(其实我也不明白那个T有什么关键作用,反正Access,MySql,MsSql都没这问题的)
我又在想,如果我用一个T会如何?
就尝试.用data_time.ToString("s");这种方法转换成 iso 8601标准字符串格式
结果我吃屎吃了个酱板头(无锡话,意思是运气好),竟然成功了.
如下:
string sql="insert into [table] (date_time)" values('" + date_time.ToString("s") + "'";
这样,问题就解决了,希望大家能够看到此贴,并发扬光大,到处流传,这样才能发展Sqlite的普及率.
附注:
我起先研究了BBSMAX的Sqlite数据库.我认为这个论坛会有好的解决方法.
但我错了.其实没有.bbsMax用了varchar代替DateTime格式.
我也照做了,但是当我用到 select * from [table] where date_time > '2006-1-1' and date_time< '2008-1-1'
类似这样的语句,想查询一个中间的时间类型时,语法错误.


相关文档:

如何高效使用SQLite .net (C#)

 SQLite 作为一个轻量级嵌入式数据库,还是非常好用的。雨痕极力推荐~~~~~~ 
今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!
下面是他发给我的测试代码。我晕~~~~~~ 
using System.Data;
using System.Data.Common;
using System.Data.SQLite; ......

SQLite Tutorial in PHP

 
SQLite Tutorial in PHP
SQLite is an SQL database manager used locally or on a website, and compatible
in particularly with PHP.
Summary
Installing SQLite and creating a database
.
Installing SQLite. Verifying the installation by creating a base.
Creating and using a SQLite tabl ......

rails使用sqlite3和mysql的问题

1、如果使用sqlite3时出现如下错误:
/!\ FAILSAFE /!\  Thu Jul 30 22:16:15 +0800 2009
  Status: 500 Internal Server Error
  unknown error
    c:/ruby/lib/ruby/1.8/dl/import.rb:29:in `initialize'
    c:/ruby/lib/ruby/1.8/dl/import.rb:29:in `dlopen'
&nb ......

Qt:SQLite 3入门教程


OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:
软件属于公共财(public domain),SQLite可说是某种「美德软件」(virtueware),作者本人放弃着作权,而给使用SQLite的人以下的「祝福」(blessing):
May you do good an ......

Sqlite DB使用例子

前一阵字做项目(嵌入式linux),由于要保存大量的数据,而且最长要保存30天的时间。本来打算保存到文件中,每次启动应用程序的时候重新解析一遍,可是当数据量很大的时候,就出现效率的问题了。所以最后还是放弃了使用文件的打算,决定使用数据库存取数据。
linux下的数据库也很多,有开源的,也有收费的。对于我们来说,肯 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号