1. sqlite里面建立数据库表的时候,没有指定字段类型,则默认是什么类型
SQLite最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite并不做任何检查。开发人员要靠自己的程序来控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。
虽然,SQLite允许忽略数据类型,但是,仍然建议在Create Table语句中指定数据类型,因为数据类型有利于增强程序的可读性。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。
2. sqlite数据库中能不能存放布尔类型的数据
sqlite数据库中不支持布尔型。
SQLite将数据值的存储划分为以下几种存储类型:
NULL: 表示该值为NULL值。
INTEGER: 无符号整型值。
REAL: 浮点值。
TEXT: 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE。
BLOB: 存储Blob数据,该类型数据和输入数据完全相同。
由于SQLite采用的是动态数据类型,而其他传统的关系型数据库使用的是静态数据类型,即字段可以存储的数据类型是在表声明时即以确定的,因此它们之间在数据存储方面还是存在着很大的差异。在SQLite中,存储分类和数据类型也有一定的差别,如INTEGER存储类别可以包含6种不同长度的Integer数据类型,然而这些INTEGER数据一旦被读入到内存后,SQLite会将其全部视为占用8个字节无符号整型。因此对于SQLite而言,即使在表声明中明确了字段类型,我们仍然可以在该字段中存储其它类型的数据。然而需要特别说明的是,尽管SQLite为我们提供了这种方便,但是一旦考虑到数据库平台的可移植性问题,我们在实际的开发中还是应该尽可能的保证数据类型的存储和声明的一致性。除非你有极为充分的理由,同时又不再考虑数据库平台的移植问题,在此种情况下确实可以使用SQLite提供的此种特征。
3. 使用SQLite如何修改数据库中的字段
(1)增加表字段
<pre>
ALTER TABLE 表名 ADD COLUMN 字段名 字段类型
</pre>
例如:
<pre>
ALTER TABLE t_student ADDCOLUMN age ingeter
</pre>
(2)删除表字段
<pre>
ALTER TABLE 表名 DROP COLUMN 字段名 字段类型
</pre>
(3)修改表字段
<pre>
ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名
</pre>
注:考sql语句
4. sqlite数据库如何插入以及修改date类型的字段
sqlite数据库中插入date类型用string类型,如下:
public void insert(String dailyGuid, String dailyCreateDate, String dailyUpdateDate, String dailyContactGuid,
String dailyEmployeeGuid, String dailyContent, String dailyType, String dailyTypeValue,
String dailyEstimateRate, String dailyRealRate, String dailyMemo, String dailyApproval,
String dailyExecuteDate, String dailyRemindSign, String dailyTime, String dailyIsdel){
SQLiteDatabase db=this.getWritableDatabase();
db.execSQL("INSERT INTO TBL_DAILY(dailyGuid, dailyCreateDate, dailyUpdateDate, dailyContactGuid, " +
"dailyEmployeeGuid, dailyContent, dailyType, dailyTypeValue, " +
"dailyEstimateRate, dailyRealRate, dailyMemo, dailyApproval, " +
"dailyExecuteDate, dailyRemindSign, dailyTime, dailyIsdel) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
new String[]{dailyGuid, dailyCreateDate, dailyUpdateDate, dailyContactGuid,
dailyEmployeeGuid, dailyContent, dailyType, dailyTypeValue,
dailyEstimateRate, dailyRealRate, dailyMemo, dailyApproval,
dailyExecuteDate, dailyRemindSign, dailyTime, dailyIsdel});
}
更新动作如下:
public void update(String dailyGuid, String dailyCreateDate, String dailyUpdateDate, String dailyContactGuid,
String dailyEmployeeGuid, String dailyContent, String dailyType, String dailyTypeValue,
String dailyEstimateRate, String dailyRealRate, String dailyMemo, String dailyApproval,
String dailyExecuteDate, String dailyRemindSign, String dailyTime, String dailyIsdel){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("dailyGuid", dailyGuid);
cv.put("dailyCreateDate", dailyCreateDate);
cv.put("dailyUpdateDate", dailyUpdateDate);
cv.put("dailyContactGuid", dailyContactGuid);
cv.put("dailyEmployeeGuid", dailyEmployeeGuid);
cv.put("dailyContent", dailyContent);
cv.put("dailyType", dailyType);
cv.put("dailyTypeValue", dailyTypeValue);
cv.put("dailyEstimateRate", dailyEstimateRate);
cv.put("dailyRealRate", dailyRealRate);
cv.put("dailyMemo", dailyMemo);
cv.put("dailyApproval", dailyApproval);
cv.put("dailyExecuteDate", dailyExecuteDate);
cv.put("dailyRemindSign", dailyRemindSign);
cv.put("dailyTime", dailyTime);
cv.put("dailyIsdel", dailyIsdel);
db.update("TBL_DAILY", cv, "dailyGuid=?", new String[]{dailyGuid});
}
public void delete(String dailyGuid){
SQLiteDatabase db=this.getWritableDatabase();
db.delete("TBL_DAILY", "dailyGuid=?", new String[]{dailyGuid});
}
注意:sqlite其中的数据 类型是可以很容易的进行转换的,提取的时候如果需要可以将String在转为date类型就可以了。
5. sqlite3怎么查询字段类型
Sqlite v3数据库中的任何列,除了整形主键列,可以用于存储任何一个存储列的值。sql语句中的中所有值,不管它们是嵌入在sql文本中或者是作为参数绑定到一个预编译的sql语句,它们的存储类型都是未定的。在下面描述的情况中,数据库引擎会在查询执行过程中在数值(numeric)存储类型(INTEGER和REAL)和TEXT之间转换值。
1.1布尔类型
Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类型,0为false,1为true
1.2 Date和Time Datatype
Sqlite没有另外为存储日期和时间设定一个存储类集,内置的sqlite日期和时间函数能够将日期和时间以TEXT,REAL或INTEGER形式存放
l TEXT 作为IS08601字符串("YYYY-MM-DD HH:MM:SS.SSS")
l REAL 从格林威治时间11月24日,4174 B.C中午以来的天数
l INTEGER 从 1970-01-01 00:00:00 UTC以来的秒数