Android 即使成功插入了许多记录,游标也始终为空
我正在使用sqlite数据库编写一个简单的crud操作。当我按下插入按钮时,数据插入成功。但当我按下搜索按钮时,光标始终显示为空,光标计数始终为0。我正在给出我的代码。请具体查看btnSearch.setOnclickListener和btnisert.setOnclickListener下的代码 希望您有一个扩展SQLiteOpenHelper的数据库类,并请在其中编写所有用于创建表的查询 现在将游标初始化为cursor=null,这将始终返回null值 尝试使用Android 即使成功插入了许多记录,游标也始终为空,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在使用sqlite数据库编写一个简单的crud操作。当我按下插入按钮时,数据插入成功。但当我按下搜索按钮时,光标始终显示为空,光标计数始终为0。我正在给出我的代码。请具体查看btnSearch.setOnclickListener和btnisert.setOnclickListener下的代码 希望您有一个扩展SQLiteOpenHelper的数据库类,并请在其中编写所有用于创建表的查询 现在将游标初始化为cursor=null,这将始终返回null值 尝试使用 Cursor lCursor
Cursor lCursor = null;
try {
SQLiteDatabase lDataBase = this.getReadableDatabase();
lCursor = lDataBase.rawQuery(pQuery, null); // pQuery = you query for search
if (lCursor != null && lCursor.getCount() > 0) {
Toast.makeText(DB.this, "button pressed", Toast.LENGTH_SHORT).show();
int count = cursor.getCount();
Toast.makeText(DB.this, String.valueOf(count), Toast.LENGTH_SHORT).show();
Toast.makeText(DB.this, cursor.getString(cursor.getColumnIndex("Name")), Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(DB.this, "cursor is null", Toast.LENGTH_LONG).show();
}
} catch (Exception ex) {
// Do something when exception occurs
}
还有一件事:您的数据没有存储在数据库中。因为您没有执行查询。用这个
btnInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = edname.getText().toString();
String phn = edphone.getText().toString();
String addr = edaddress.getText().toString();
String query = "INSERT INTO Info (Name,phone,address)VALUES("+name+","+phn+","+addr+")";
db.execSQL(query);
Toast.makeText(DB.this, "data inserted", Toast.LENGTH_SHORT).show();
}
});
好的,首先,您需要应用一些常见的面向对象编程原则,如 您需要隔离您的数据库,以便不了解应用程序的任何业务规则。这是一个好主意 关于你的问题: 您没有正确实现SQLite。SQLite需要扩展一个helper类,以便在需要时创建、更新和删除DB。检查此项以开始。
额外:btn插入=按钮findViewByIdR.id.btn插入;在Android Studio 3+中不再需要强制转换,因此请删除强制转换以使其更简单=btnisert=findViewByIdR.id.btnisert 斯雷!我在stackoverflow又发了一个帖子。这是链接:请阅读并指导我,如果可以的话,我会感谢你
btnInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = edname.getText().toString();
String phn = edphone.getText().toString();
String addr = edaddress.getText().toString();
String query = "INSERT INTO Info (Name,phone,address)VALUES("+name+","+phn+","+addr+")";
db.execSQL(query);
Toast.makeText(DB.this, "data inserted", Toast.LENGTH_SHORT).show();
}
});
Try This: To insert data into Info Table
btnInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = edname.getText().toString();
String phn = edphone.getText().toString();
String addr = edaddress.getText().toString();
insertData(name,addr,phn);
}
});
public void insertData(String name, String address, String phoneNumber) {
SQLiteDatabase database = dbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("Name", name);
contentValues.put("phone", address);
contentValues.put("address", phoneNumber);
database.insert("Info", null, contentValues);
}