Java 调用游标时出现Android sqlite数据库空指针异常
您好,我有问题,请查看我的代码:Java 调用游标时出现Android sqlite数据库空指针异常,java,android,database,sqlite,Java,Android,Database,Sqlite,您好,我有问题,请查看我的代码: public void showfal() { Cursor cu = database.rawQuery("SELECT * FROM fal WHERE startdate = 'G.todaydate'", null); while (cu.moveToNext()) { farvardin.add(cu.getString(cu.getColumnIndex("farvardin")) + "");
public void showfal() {
Cursor cu = database.rawQuery("SELECT * FROM fal WHERE startdate = 'G.todaydate'", null);
while (cu.moveToNext()) {
farvardin.add(cu.getString(cu.getColumnIndex("farvardin")) + "");
ordibehesht.add(cu.getString(cu.getColumnIndex("ordibehesht")) + "");
khordad.add(cu.getString(cu.getColumnIndex("khordad")) + "");
tir.add(cu.getString(cu.getColumnIndex("tir")) + "");
mordad.add(cu.getString(cu.getColumnIndex("mordad")) + "");
shahrivar.add(cu.getString(cu.getColumnIndex("shahrivar")) + "");
mehr.add(cu.getString(cu.getColumnIndex("mehr")) + "");
aban.add(cu.getString(cu.getColumnIndex("aban")) + "");
azar.add(cu.getString(cu.getColumnIndex("azar")) + "");
dey.add(cu.getString(cu.getColumnIndex("dey")) + "");
bahman.add(cu.getString(cu.getColumnIndex("bahman")) + "");
esfand.add(cu.getString(cu.getColumnIndex("esfand")) + "");
}
cu.close();
}
当我调用showfal()时,我收到::
08-07 11:52:00.545: E/AndroidRuntime(6362): FATAL EXCEPTION: main
08-07 11:52:00.545: E/AndroidRuntime(6362): java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.aradmobaile.mhd.fal/ir.aradmobaile.mhd.fal.Activity_dailyfal}: java.lang.NullPointerException
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.os.Handler.dispatchMessage(Handler.java:99)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.os.Looper.loop(Looper.java:137)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-07 11:52:00.545: E/AndroidRuntime(6362): at java.lang.reflect.Method.invokeNative(Native Method)
08-07 11:52:00.545: E/AndroidRuntime(6362): at java.lang.reflect.Method.invoke(Method.java:511)
08-07 11:52:00.545: E/AndroidRuntime(6362): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-07 11:52:00.545: E/AndroidRuntime(6362): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-07 11:52:00.545: E/AndroidRuntime(6362): at dalvik.system.NativeStart.main(Native Method)
08-07 11:52:00.545: E/AndroidRuntime(6362): Caused by: java.lang.NullPointerException
08-07 11:52:00.545: E/AndroidRuntime(6362): at ir.aradmobaile.mhd.fal.Activity_dailyfal.showfal(Activity_dailyfal.java:167)
08-07 11:52:00.545: E/AndroidRuntime(6362): at ir.aradmobaile.mhd.fal.Activity_dailyfal.onCreate(Activity_dailyfal.java:39)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.Activity.performCreate(Activity.java:5104)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-07 11:52:00.545: E/AndroidRuntime(6362): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-07 11:52:00.545: E/AndroidRuntime(6362): ... 11 more
08-07 11:57:00.549: E/InputDispatcher(368): channel '534453b4 ir.aradmobaile.mhd.fal/ir.aradmobaile.mhd.fal.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
08-07 11:57:00.549: E/InputDispatcher(368): channel '5355de34 Toast (server)' ~ Channel is unrecoverably broken and will be disposed!
public class Activity_dailyfal extends MainActivity {
public static Database db;
public SQLiteDatabase database;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_fourth);
db = new Database(this);
db.database();
db.open();
showfal();
}
这是我的数据库活动:
package ir.aradmobaile.mhd.fal;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
公共类数据库扩展了SQLiteOpenHelper{
// public final String path = "data/data/ir.aradmobaile.dabiri.fal/databases/"; // adresi ke data barname mire dakhelesh
public final String Name = "arad_db"; // name of database
public SQLiteDatabase mydb;
private final Context mycontext;
公共数据库(上下文){
我查了一下我的表,这有两条记录。
我搞不清楚我的错在哪里我认为你的问题不对 并在访问它之前检查游标null
例如:
while(cu!=null&&cu.moveToNext()){
如果cloumn的名称正确,则使用
Cursor cu = database.rawQuery("SELECT * FROM fal WHERE startdate='"+ G.todaydate+"';", null);
是,在访问它之前检查(cursor!=null)。您尚未初始化
数据库成员变量。
Cursor cu = database.rawQuery("SELECT * FROM fal WHERE startdate='"+ G.todaydate+"';", null);