首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQLite数据库中插入布尔值?

如何在SQLite数据库中插入布尔值?
EN

Stack Overflow用户
提问于 2020-07-09 05:01:44
回答 1查看 208关注 0票数 0

这是我的添加数据的函数:

代码语言:javascript
运行
复制
public boolean addData(String item1, boolean done) throws SQLException {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COL2, item1);
        cv.put(COL3, done);

        long result = db.insert(TABLE_NAME, null, cv );

        //if date was inserted incorrectly it will return -1, thus returning false here
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

以及如何创建我的数据库以及列和表名:

代码语言:javascript
运行
复制
public static final String DATABASE_NAME = "mylist.db";
public static final String TABLE_NAME = "mylist_data";
public static final String COL1 = "id";
public static final String COL2 = "name";
public static final String COL3 = "isdone";


public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME +  " 
 ("+ COL1 +" INTEGER PRIMARY KEY AUTOINCREMENT, " 
   + COL2 + " TEXT,"
   + COL3 +" BOOLEAN )";
    db.execSQL(createTable);
}

执行时,insert语句返回"-1",这意味着它没有完成插入。你知道如何将布尔值保存到数据库中吗?

(问题确实出在布尔值上,因为当代码注释掉时,我可以毫无问题地插入值)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-09 05:05:24

请看这里: 2.1中的https://www.sqlite.org/datatype3.html

请改用值为0和1的整数。

您使用的是C#还是Java?请贴上相应的标签。

在创表sql中将COL3设置为INTEGER,并将cv.put(COL3, done);行改为cv.put(COL3, done? 1: 0);

代码语言:javascript
运行
复制
public boolean addData(String item1, boolean done) throws SQLException {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(COL2, item1);
        cv.put(COL3, done? 1: 0);

        long result = db.insert(TABLE_NAME, null, cv );

        return (result != -1); 
    }

我删除了注释-1,因为它记录在参考https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#insert(java.lang.String,%20java.lang.String,%20android.content.ContentValues)中,所以注释是无效的。

这是一个在C#中的问题--我首先想到的--但现在在Java语言中:

代码语言:javascript
运行
复制
public static final String DATABASE_NAME = "mylist.db";
public static final String TABLE_NAME = "mylist_data";
public static final String COL1 = "id";
public static final String COL2 = "name";
public static final String COL3 = "isdone";


public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME +  " 
 ("+ COL1 +" INTEGER PRIMARY KEY AUTOINCREMENT, " 
   + COL2 + " TEXT,"
   + COL3 +" INTEGER)";
    db.execSQL(createTable);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62803585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档