【问题标题】:How to set a default value to a TEXT column in Sqlite?如何在 Sqlite 中为 TEXT 列设置默认值?
【发布时间】:2016-04-27 05:49:11
【问题描述】:

我有一张简单的桌子。我正在尝试为 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 列的值。

【问题讨论】:

  • 您的 INSERT 语句是什么?
  • 你是在 SQLiteOpenHelper 的 oncreate 方法中创建表吗?
  • 请提供您如何在表格中插入数据的代码
  • 更新了我的问题。是的,我正在 onCreate 中创建表。表创建没有任何问题。我还使用 sqlite 浏览器检查了数据库。主要问题是如何将默认值设置为 TEXT 列。
  • 你为什么使用 TEXTUAL ids?!您应该改用 INTEGER。

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


【解决方案1】:

改变表格,

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

【讨论】:

    【解决方案2】:

    您可以在创建表时为列指定默认值。 (您似乎无法使用 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.

    【讨论】:

    • 如果我在没有NOT NULL 的情况下创建列,那么它不会将空字符串作为默认值,也不会像您给出的那样采用“abc”。它需要空值。我已经看过大部分以前的答案,但没有一个有效。
    • 您想将列值默认设置为“某事”吗?正确的 ?那么这工作@AbirHasan
    • CREATE TABLE book(_id INTEGER PRIMARY KEY AUTOINCREMENT,book TEXT DEFAULT "abc");我已经尝试过这个解决方案,它正在工作@AbirHasan
    猜你喜欢
    • 2015-01-09
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多