NullPointerException openOrCreateDatabase Android

时间:2012-03-21 08:56:40

标签: android nullpointerexception

打开数据库时,我的EhActivity类中出现了NullPointerException

 public class EHActivity extends Activity {
ArrayList<String>ques= new ArrayList<String>();
 ArrayList<String>ans=new ArrayList<String>();
 SQLiteDatabase db2;

  public ArrayList<String> getQues()
  {
   db2=openOrCreateDatabase("interview.db", MODE_PRIVATE, null);
   db2.execSQL("create table eh (qid int primary key,ques varchar,ans char)");
       db2.execSQL("insert into subject values(1,'What is an exception?','A1 '))");
   db2.execSQL("insert into subject values(2,'What is error?','A2 '))");
       Cursor c=db2.rawQuery("select * from eh",null);
   while(c.moveToNext())
   {
    ques.add(c.getString(1));
   }
   return ques;
  }
 }

log cat view是:

  

03-21 14:06:15.910:E / AndroidRuntime(955):java.lang.NullPointerException   03-21 14:06:15.910:E / AndroidRuntime(955):在android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)   03-21 14:06:15.910:E / AndroidRuntime(955):在interview.android.EHActivity.getQues(EHActivity.java:19)

3 个答案:

答案 0 :(得分:1)

尽量不发送空.. openOrCreateDatabase有另一种方法..

db2=openOrCreateDatabase("interview.db", MODE_PRIVATE);

openDatabase("interview.db", MODE_PRIVATE, SQLiteDatabase.CREATE_IF_NECESSARY)

答案 1 :(得分:0)

public class Database_creat {
    private static final String DATABASE_NAME = "interview.db";
    public static final String DATABASE_TABLE_CATEGORY = "category";
    public static final String DATABASE_TABLE_TODO_LIST = "todo_list";
    private static final int DATABASE_VERSION = 1;
    public ArrayList<ModelToDO> list;


    private DataBaseHelper mDbhelper;
    private SQLiteDatabase mDb;

    Context mContext;
    private static final String DATABASE_CREATE_CATEGORY = "create table category(id integer primary key autoincrement , "
            + "category text not null);";
    private static final String DATABASE_CREATE_TODO_LIST = "create table todo_list(id integer primary key autoincrement , "
            + "title text not null,description text not null,category text not null, due_date Date not null,alarm_time text ,alarm_set text,priority text,parform Boolean);";

    private static class DataBaseHelper extends SQLiteOpenHelper {

        DataBaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            // TODO Auto-generated constructor stub
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL(DATABASE_CREATE_CATEGORY);
            db.execSQL(DATABASE_CREATE_TODO_LIST);
        }

        //Delete All todo_list Table info
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS submit");
            onCreate(db);
        }
    }

    public Database_creat(Context context) {
        this.mContext = context;
    }

    public Database_creat Open() throws SQLException {
        mDbhelper = new DataBaseHelper(mContext);
        mDb = mDbhelper.getWritableDatabase();
        return this;

    }

    public void close() {
        mDbhelper.close();
    }

    //Add new Category name
    public long insertinfo(String cate) {
        ContentValues con = new ContentValues();
        con.put("category", cate);
        return mDb.insert(DATABASE_TABLE_CATEGORY, null, con);
    }


}

这个在使用过的查询中创建数据库

答案 2 :(得分:0)

HI Shubh尝试以下代码..

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


db2=openOrCreateDatabase("sdcard/yourappfolder/interview.db", MODE_PRIVATE, null);