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

11

我有一个简单的表格。我尝试为一个文本列设置默认值。这是表格查询语句:

"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);"     

但问题仍然存在。我在Stack Overflow上搜索了一些答案,但它们都过时了,现在对我没有作用。那么,如何在sqlite中设置TEXT列的默认值是否有所改变?谢谢提前!

编辑
这是插入语句:

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

这里cvContentValues对象的属性,它仅包含book_name列的值。


你的 INSERT 语句是什么? - mmuzahid
你是在SQLiteOpenHelper的onCreate方法中创建表格吗? - Hari Krishnan
请提供您在表中插入数据的代码请提供您在表中插入数据的代码 - Hari Krishnan
@Tashen。尝试过了,不起作用 :( - Abir Hasan Shawon
1
为什么你使用文本ID?!你应该使用整数。 - Phantômaxx
显示剩余5条评论
2个回答

25

在创建表时,您可以为列指定默认值。(似乎无法使用 ALTER 语句添加默认值,因此您需要重新创建表。)

您可以在创建表时为列指定默认值,但似乎不能使用 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 文档


如果我创建列时没有使用NOT NULL,那么它不会将空字符串作为默认值或者像你所给出的'abc'。它会取null。我看过大多数之前的答案,但是它们都不起作用。 - Abir Hasan Shawon
你想将列的值默认设置为“something”,对吧?这样可以行得通。@AbirHasan - Amit Vaghela
1
创建表book(_id INTEGER PRIMARY KEY AUTOINCREMENT,book TEXT DEFAULT "abc"); 我已经尝试了这个解决方案,它可以工作 @AbirHasan - Amit Vaghela

3

修改表结构,

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接