SQLite使用中的总结

数据库定义的问题 

1.自增列的数据类型如果是int,则可能出现*** may not be null 错误,应该用integer

2.查询中以时间作为条件,时间格式必须严格符合“2010-01-10 00:00:00”01不能为1

SQLITE datetime问题

如果按正常的方法加入SQLite的数据,若类型是datetime,会出现格式错误,不能读取。

原因是 SQLite采用的时间格式 是ISO 8601,例如:2010-9-9T12:00:00.000或者2010-9-9

必须严格符合此格式 

SQLite中有还有date,time,TIMESTAMP 三种时间类型数据,date是日期,time是时间,TIMESTAMP 是时间加日期 

解决方法:

如果数据源是sql server ,可以使用

CONVERT(varchar(23) , getdate(),126 )  转换

c# 用.ToString("S")转换,例如。DateTime.Now.ToString("s")

读取没有变化

Sql server中各种时间格式编号

规则如下:

1 101 美国 mm/dd/yyyy

2 102 ANSI yy.mm.dd

3 103 英国/法国 dd/mm/yy

4 104 德国 dd.mm.yy

5 105 意大利 dd-mm-yy

6 106 - dd mon yy

7 107 - mon dd, yy

8 108 - hh:mm:ss

- 9 109 (*)   默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM

10 110 美国 mm-dd-yy

11 111 日本 yy/mm/dd

12 112 ISO yymmdd

- 13 113 (*)   欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)

14 114 - hh:mi:ss:mmm(24h)

- 20 120 (*)   ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]

- 21 121 (*)   ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]

- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)

- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM

- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM

SQLite的分页是相当舒服的 

语法如下 select * from table limit startRow,end Row 

例如 select * laCompany limit 0,10 可以找出第0条到第10条的记录

SQLite select语句不支持Top函数,这点正好可以解决

在查询中判断赋值 和sql server一样 

Case when columnName=value then display else display end 

End  必须有 

select SCageID as '编号',cage as '笼位号',case when isAvailable=0 then '已有动物' else '可用' end 

as '是否可用' from lacage where comid='010001' limit 0,5



posted @ 2011-04-28 11:30  Marvel  阅读(903)  评论(0)    收藏  举报