Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在首次安装时解决空指针引用错误_Android_Sqlite - Fatal编程技术网

Android 如何在首次安装时解决空指针引用错误

Android 如何在首次安装时解决空指针引用错误,android,sqlite,Android,Sqlite,Mydbhelper.javahave方法 public Cursor report(){ SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery("SELECT * FROM Employees", null); return c; } Mainactivity.java private List<Front1> viewReport(){ List<Fr

Mydbhelper.javahave方法

public Cursor report(){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c = db.rawQuery("SELECT * FROM Employees", null);
    return c;
}
Mainactivity.java

private List<Front1> viewReport(){

    List<Front1> employeeList1 = new ArrayList<>();

    Cursor c = db.report();

if (c != null && c.getCount() > 0) {         // Add the addition condition
if (c.moveToFirst()) {
    do{
        String ids=c.getString(c.getColumnIndex("e_ids"));
        String name=c.getString(c.getColumnIndex("e_name"));


        Front1 front1=new Front1(ids,name1);
       employeeList1.add(front1);

    }while (c.moveToNext());}


}else{ 

Front1 front1=new Front1("101","suran");
       employeeList1.add(front1);

 }
私有列表视图报告(){
List employeeList1=新的ArrayList();
游标c=db.report();
如果(c!=null&&c.getCount()>0){//添加添加条件
if(c.moveToFirst()){
做{
字符串id=c.getString(c.getColumnIndex(“e_id”);
String name=c.getString(c.getColumnIndex(“e_name”);
Front1 Front1=新Front1(ID,名称1);
员工名单1。添加(前台1);
}while(c.moveToNext());}
}否则{
Front1 Front1=新Front1(“101”、“苏兰”);
员工名单1。添加(前台1);
}

我有employee表。第一次安装应用程序时,我的表为空,因此应用程序崩溃。如果我添加dumny数据,则停止应用程序崩溃,但用户再次删除dumny数据,则应用程序崩溃。如何解决空对象引用初始阶段。这意味着如果resultset为空,则使用select语句。我希望我的应用程序运行时不崩溃。任何指南都将有助于ull对我来说。

由于
游标
不会返回null如果表为空,您应该使用
getCount()
函数来解决您的问题。您的代码应该如下所示:

if (c != null && c.getCount() > 0) {         // Add the addition condition
    if (c.moveToFirst()) {
        do{
            String ids=c.getString(c.getColumnIndex("e_ids"));
            String name=c.getString(c.getColumnIndex("e_name"));


            Front1 front1=new Front1(ids,name1);
           employeeList1.add(front1);

        }while (c.moveToNext());}


}

您的问题是,查询不会返回空游标。相反,在没有提取数据的情况下,游标将为空

这可以使用Cursor
getCount()
方法进行检查。但是,通过检查返回值(true或false)也同样容易进行检查移动???方法,如
moveToNext
moveToNext
,也可用于遍历while循环中的多行。因此,最简单的解决方案可能是使用:-

if (c.moveToNext()) {
    String ids=c.getString(c.getColumnIndex("e_ids"));
    String name=c.getString(c.getColumnIndex("e_name"));
    Front1 front1=new Front1(ids,name1);
    employeeList1.add(front1);
}

显然,您可能需要检查返回列表的大小,因为它的大小可能为0。

是。大小为零。因为第一次安装应用程序时,该时间表为空。抱歉,请明确询问。我尝试了if table empty skip and move else条件。但显示错误光标c=db.report();行。我想得到c==null。它意味着从dbhelperif表返回null,然后返回c。返回c意味着null或int 0。如果(c==null),如何设置条件然后…else…或任何其他。代码中存在未显示的错误或问题,可能是因为表Employees不存在,这可能是dbhelper的onCreate方法中的代码存在问题。请使用true或false(getcount())在dbhelper中解决我的问题。谢谢。是的。大小为零。因为第一次安装应用程序时,时间表为空。抱歉,请明确询问。我尝试了如果表为空跳过并移动其他条件。(更改代码添加其他条件手动添加数组数据),但显示错误光标c=db.report();行。如果表为空,c将不会返回null。您必须检查
getCount()
值是否大于0。请按照上面的过程进行操作。我尝试了相同的错误。代码不会读取下一行(因为行==0)。因此代码不会跳过If条件。游标c=db.report();划掉了这行。为了方便起见,您可以发布整个代码和错误日志吗?它可以工作。谢谢