Android 即使成功插入了许多记录,游标也始终为空

Android 即使成功插入了许多记录,游标也始终为空,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在使用sqlite数据库编写一个简单的crud操作。当我按下插入按钮时,数据插入成功。但当我按下搜索按钮时,光标始终显示为空,光标计数始终为0。我正在给出我的代码。请具体查看btnSearch.setOnclickListener和btnisert.setOnclickListener下的代码 希望您有一个扩展SQLiteOpenHelper的数据库类,并请在其中编写所有用于创建表的查询 现在将游标初始化为cursor=null,这将始终返回null值 尝试使用 Cursor lCursor

我正在使用sqlite数据库编写一个简单的crud操作。当我按下插入按钮时,数据插入成功。但当我按下搜索按钮时,光标始终显示为空,光标计数始终为0。我正在给出我的代码。请具体查看btnSearch.setOnclickListener和btnisert.setOnclickListener下的代码

希望您有一个扩展SQLiteOpenHelper的数据库类,并请在其中编写所有用于创建表的查询

现在将游标初始化为cursor=null,这将始终返回null值

尝试使用

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

            }