我有一张简单的桌子。我正在尝试将默认值放入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 列的值。
答案 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' ");