这是我的添加数据的函数:
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);
}
执行时,insert语句返回"-1",这意味着它没有完成插入。你知道如何将布尔值保存到数据库中吗?
(问题确实出在布尔值上,因为当代码注释掉时,我可以毫无问题地插入值)。
发布于 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);
:
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);
}
https://stackoverflow.com/questions/62803585
复制相似问题