聂小袁 2014-08-04 05:40 采纳率: 0%
浏览 5803

使用Cursor cursor=SQLiteDatabase.query()出现了空指针错误

enter code here`

package com.example.bluetooth.le;

import java.util.Calendar;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TextView;

public class zhuzhuang1 extends Activity {
public DBhelper helper = null;
public SQLiteDatabase db = null;
public Cursor cursor=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.zhuzhuang);
String TBL_NAME = "xiedian";
helper = new DBhelper(getBaseContext());
String strdata=Integer.toString(Calendar.getInstance().get(Calendar.YEAR))+
Integer.toString(Calendar.getInstance().get(Calendar.MONTH))+
Integer.toString(Calendar.getInstance().get(Calendar.DATE));

     cursor=db.query(TBL_NAME, new String[]{"bushu","karluli"}, "data=?", new String[]{strdata}, null,null, null);
     //cursor=db.query(TBL_NAME, null, null, null, null,null, null);
     if(cursor != null && cursor.getCount() >= 1)
     {   int i=cursor.getCount();
    TextView ceshi=(TextView)findViewById(R.id.ceshi);
    ceshi.setText(i+"");
     }
}

}

想了半天都不知道怎么改,还望各位大神赐教

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 10:24
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,你尝试通过db.query()方法获取数据,并试图从结果集中获取行数。但是,在调用if(cursor != null && cursor.getCount() >= 1)之前,你需要先确保cursor对象是有效的。

    这可能是因为你在查询时没有正确设置null条件(即查询所有列)。你可以这样修改:

    cursor=db.query(TBL_NAME, new String[]{"bushu", "karluli"}, "data=?", new String[]{strdata}, null, null, null);
    

    然后在if语句前加上一个else来处理cursor为空的情况。

    这是修改后的代码:

    cursor=db.query(TBL_NAME, new String[]{"bushu", "karluli"}, "data=?", new String[]{strdata}, null, null, null);
    
    if (cursor != null && cursor.getCount() >= 1) {
        int i = cursor.getCount();
        TextView ceshi = (TextView) findViewById(R.id.ceshi);
        ceshi.setText(i + "");
    } else {
        // 处理cursor为空的情况
    }
    

    现在,你应该可以在屏幕上看到正确的行数了。

    评论

报告相同问题?