如何将布尔值插入到我的 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);
}
这是我添加数据的功能:
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);
}