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



这是我添加数据的函数:

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

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

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

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

(这个问题确实存在于布尔值中,因为当注释出代码时,我可以毫无问题地插入值(。

查看此处:https://www.sqlite.org/datatype3.html2.1

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

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

并将表创建sql中的COL3设置为INTEGER;CCD_ 1";至";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.Sstring,%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);
}

最新更新