android 的 Sqlite 游标
android's Sqlite cursor
当我构建 SQLite 数据库时
public static final String CREATE_BOOK = "create table Book(" + "id integer primary key autoincrement," + "author text," + "price real," + "pages integer," + "name text," + "category_id integer)";
然后有一个按钮add_data
add_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbhelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("author", "jose");
values.put("name", "Thank you!");
values.put("pages", 999);
values.put("price", 99.9);
db.insert("Book", null, values); }
});
我想查询 table
query_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbhelper.getWritableDatabase();
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if(cursor.moveToFirst()){
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity", "book name is" + name);
Log.d("MainActivity", "book author is" + author);
Log.d("MainActivity", "book pages is" + pages);
Log.d("MainActivity", "book prices is" + price);
}while (cursor.moveToNext());
}
cursor.close();
}
});
而我 运行 它,有一些错误:无法从具有 1 行 5 列的 CursorWindow 读取第 0 行,第 -1 列。在从游标访问数据之前,确保游标已正确初始化。
最后,我把add_data的顺序换成"author"和"name",就是运行
有什么问题吗?谢谢!
如果您希望在完成时保存值,您需要处于事务中(并提交)。
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction()
...插入、更新、删除等
if (ok) {
db.setTransactionSucessful();
}
db.endTransaction();
db.close();
试试这个
读取数据使用
this.getReadableDatabase()
您正在使用
getWritableDatabase()
在query_data.setOnClickListener
当我构建 SQLite 数据库时
public static final String CREATE_BOOK = "create table Book(" + "id integer primary key autoincrement," + "author text," + "price real," + "pages integer," + "name text," + "category_id integer)";
然后有一个按钮add_data
add_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbhelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("author", "jose");
values.put("name", "Thank you!");
values.put("pages", 999);
values.put("price", 99.9);
db.insert("Book", null, values); }
});
我想查询 table
query_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbhelper.getWritableDatabase();
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if(cursor.moveToFirst()){
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity", "book name is" + name);
Log.d("MainActivity", "book author is" + author);
Log.d("MainActivity", "book pages is" + pages);
Log.d("MainActivity", "book prices is" + price);
}while (cursor.moveToNext());
}
cursor.close();
}
});
而我 运行 它,有一些错误:无法从具有 1 行 5 列的 CursorWindow 读取第 0 行,第 -1 列。在从游标访问数据之前,确保游标已正确初始化。
最后,我把add_data的顺序换成"author"和"name",就是运行
有什么问题吗?谢谢!
如果您希望在完成时保存值,您需要处于事务中(并提交)。
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction()
...插入、更新、删除等
if (ok) {
db.setTransactionSucessful();
}
db.endTransaction();
db.close();
试试这个
读取数据使用
this.getReadableDatabase()
您正在使用
getWritableDatabase()
在query_data.setOnClickListener