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

浙公网安备 33010602011771号