如何将布尔值插入到我的 SQLite 数据库中?

How do I insert a Boolean Value into my SQLite Database?

这是我添加数据的功能:

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;
        }
    }

以及我如何创建数据库以及列和 table 名称:

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

执行时,插入语句returns为“-1”,表示没有完成插入。知道如何将布尔值保存到数据库中吗?

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

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

改用值为 0 和 1 的整数。

您使用的是 C# 还是 Java?请相应地标记它。

并将 table 创建中的 COL3 sql 设置为 INTEGER 并将行“cv.put(COL3, done);”更改为“cv.put(COL3, done? 1: 0);”:

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:

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