如何在Sqlite中为TEXT列设置默认值?

时间:2016-01-21 05:27:11

标签: android database sqlite android-studio android-sqlite

我有一张简单的桌子。我正在尝试将默认值放入TEXT列。这是表查询:

"CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT, book_id TEXT NOT NULL DEFAULT '0', book_name TEXT NOT NULL);"   

它创建表但我尝试插入数据时会出现问题。我只是尝试将图书名称提供给 book_name ,因为我预计 book_id 会在列中显示默认值0。但它没有,它添加了空值,因此行不会插入。我也试过这个查询:

"CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT, book_id TEXT NOT NULL DEFAULT \'0\', book_name TEXT NOT NULL);"     

但问题仍然存在。我已经搜索了堆栈溢出,得到了一些答案,但它们已经老了,现在还不适合我。因此,如何在sqlite中将默认值设置为TEXT列有所改变。在此先感谢:)

修改
这是insert语句:

database.insert("book", null, cv);    

此处 cv ContentValues 的对象,其中仅包含 book_name 列的值。

2 个答案:

答案 0 :(得分:14)

您可以在创建表时为列指定默认值。 (看起来好像您可以使用 ALTER 语句添加默认值,因此您必须重新创建表格。)

CREATE TABLE your_table_name
(MainContactName TEXT NOT NULL DEFAULT '')

对于示例

CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT,book TEXT DEFAULT "abc");

现在看到,默认值设置为“abc”

检查sqllite documentation

答案 1 :(得分:2)

改变表格,

sqlitedbInstance.execSQL("alter table myTable add column Address TEXT DEFAULT 'ABC' ");