我读sqlite数据库时抛出异常

时间:2015-10-09 13:51:29

标签: java android sqlite

我有错误,实际上代码抛出异常。我无法从sqlite数据库中读取数据。

这是我的课程,它是关于数据库的工作

public class Database extends SQLiteOpenHelper{
public SQLiteDatabase db;

public Database(Context c) 
{
    super(c, c.getDatabasePath("MobileTech.db").toString(), null, 3);

    getWritableDatabase().close();
}

@Override
public void onCreate(SQLiteDatabase db)
{
    Log.e("x", "MobileTech.db oluşturuluyor");

    /**
     * Mobil Kullanıcı Tablosu
     */             
    db.execSQL("CREATE TABLE MOBILEUSERS" + 
    "(ID TEXT PRIMARY KEY, USERNAME TEXT, PASSWORD TEXT)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}

这里是读取此类的mobileusers方法:

//I try to read mobileusers data here
public ArrayList<MobileUsers> getMobileUsers()
{
    ArrayList<MobileUsers>userList = new ArrayList<MobileUsers>();
    db=getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT USERNAME,PASSWORD FROM MOBILEUSERS", null);
    while (cursor.moveToNext())
    {
        MobileUsers user = new MobileUsers(cursor.getString(0), cursor.getString(1));
        userList.add(user);
    }
    db.close();
    return userList;
}

这里是从数据库类调用read数据库方法的方法(我发布了)

public ArrayList<MobileUsers> userList()
{
    ArrayList<MobileUsers>userList = new ArrayList<MobileUsers>();
    Database db = new Database(this.c);
    userList = db.getMobileUsers();
    for(MobileUsers mobileUser : userList)
    {
        Log.e("isim", mobileUser.name);
        Log.e("şifre", mobileUser.password);
    }
    return userList;        
}

但我得到了一个例外。这个例外就在这里。

enter image description here

我的错误在哪里?我无法抓住,我看不到。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

super(c, c.getDatabasePath("MobileTech.db").toString(), null, 3);

Context c为空,或getDatabasePath("MobileTech.db")返回null。