2016-01-21 66 views
2

我有一张简单的桌子。我试图把一个默认值的文本列。这里是表查询:如何将默认值设置为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列时发生了一些变化。感谢提前:)

编辑
这里是插入语句:

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

这里CVContentValues的对象,它包含了列BOOK_NAME只值。

+0

你的INSERT语句是什么? – mmuzahid

+0

您是否在SQLiteOpenHelper的oncreate方法中创建表? –

+0

请提供如何在表格中插入数据的代码 –

回答

10

您可以在创建表格时指定列的默认值。 (它不会出现,好像你可以使用ALTER 声明添加一个默认的,所以你必须重新创建表。)

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

对于

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

现在看到的是,默认值设置为 “ABC”

支票S. qllite documentation

+0

如果我创建没有NOT NULL的列,那么它不会将空字符串作为默认值或'abc'。它看起来是空的,我已经看到大多数以前的答案,但他们都没有工作 –

+0

你想默认设置列值为'something'?对吗?那么这个工程@AbirHasan –

+0

你尝试过吗?导致它不工作。 @Amit –