打开数据库时,我的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)
答案 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);