Java 数据库表未在SQLite Android中显示
在这里我做的是数据库游标的功能,这是经常使用的项目 以下是我的DAL代码:Java 数据库表未在SQLite Android中显示,java,android,sqlite,nullpointerexception,android-sqlite,Java,Android,Sqlite,Nullpointerexception,Android Sqlite,在这里我做的是数据库游标的功能,这是经常使用的项目 以下是我的DAL代码: public Cursor SelectQuery(String table){ Cursor cursor=SQLiteDb.query(table,null,null,null,null,null,null,null); return cursor; } 通过调试,SQLiteDB在mainactivity中变为null 代码: 以便获得总行数,但表不在其中。此处ConstantsValues.TabDat
public Cursor SelectQuery(String table){
Cursor cursor=SQLiteDb.query(table,null,null,null,null,null,null,null);
return cursor;
}
通过调试,SQLiteDB在mainactivity中变为null
代码:
以便获得总行数,但表不在其中。此处ConstantsValues.TabData具有表名。
其中,如此处代码所示:
public ArrayList AllSelectQryForTabEmpData1() {
ArrayList<Employee> data = new ArrayList();
Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null, null, null, null, null, null);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex(ConstantsValues.ID));
String name = cursor.getString(cursor.getColumnIndex(ConstantsValues.NAME));
String value= cursor.getString(cursor.getColumnIndex(ConstantsValues.VALUE));
data.add(new Employee(id, name,value));
}
cursor.close();
return data;
}
我正在获取SQLiteDb中的表。看来做游标有点不对劲
这是我的日志:
您需要首先实例化SQLiteDatabase,如下所示:
// Create and/or open the database for writing
SQLiteDatabase db = getWritableDatabase();
openDB();
Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null,
null, null, null, null, null);
...
更新:
对于简单的修复,您可以将openDB方法更改为注意:未测试:
public void openDB() {
if(sqliteDB == null) {
sqliteDB= new DBHelper(context).getWritableDatabase();
} else {
if(!sqliteDB.isOpen(){
// reopen again.
// NOTE: This should be changed to the method which you use to open the db.
sqliteDB= new DBHelper(context).getWritableDatabase();
}
}
}
然后在每次使用SQLiteDb时调用它,如下所示:
// Create and/or open the database for writing
SQLiteDatabase db = getWritableDatabase();
openDB();
Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null,
null, null, null, null, null);
...
我认为数据库连接有问题。请特别遵循本教程DBHelper.java类。他们是如何建立数据库连接的。
通过使用getWritableDatabase,您可以对数据库执行读写操作。已编辑…我的问题SqliteDB为空,请正确初始化它。您可以初始化演示代码,以便我能够理解…原因:java.lang.NullPointerException,db为空?是的…@DonaldWuWell我在AllSelectQryForTabEmpData1中的另一个代码工作正常…但我想还不是这个,这些代码片段来自两个不同的java类。可能是,在一个连接中创建了连接,但在另一个连接中没有@是的,我刚刚在其他java类中初始化了它…**arr_emp**=ban.AllSelectQryForTabEmpData1;请确保在使用SQLiteDB之前已建立连接。如果需要,请再次调用openDb方法。你是对的,谢谢:1票赞成..:
openDB();
Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null,
null, null, null, null, null);
...
SQLiteDatabase db = this.getWritableDatabase();