在Android中运行Create Table SQL命令

时间:2012-03-10 10:08:47

标签: android sql

继我之前关于表格的问题之后,我试图在Android上的数据库中创建其他表格。

基本上,我希望创建一个数据库,这个代码由以下代码完成:

 public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
    }

然后,当用户添加帐户时,我希望添加一个用户输入帐户名称的表格。我尝试调用我创建的createTable()方法。

 public void createAccount(String account) {
        DATABASE_TABLE = account;
        db.execSQL(TABLE_CREATE);
        System.out.println(DATABASE_NAME);      
}

但是db不起作用,因为eclipse无法找到变量。我尝试mDb这是我的SQLiteDatabase,但我得到一个空指针异常。

*编辑*

我真的无法理解数据库。我正在使用For Dummies书籍和数据库助手,但是从现在开始我觉得很多代码都是在幕后完成的,很难理解。

这是我的数据库类的一部分:

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    public void onCreate(SQLiteDatabase db) {
        System.out.println(DATABASE_TABLE);
        db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

    public void createAccount(String account) {
        DATABASE_TABLE = account;
        /*   SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("create table long ("
                + KEY_ROWID + " integer primary key autoincrement, "
                + KEY_DESCRIPTION + " text not null, " 
                + KEY_DEBIT + " text not null);");   
    }       
}

在课程的最底层我有

public void changeDatabase(String account) {
    DATABASE_TABLE = account;
    mDbHelper.createAccount(account);
}

从我的createAccount类调用。

我收到零点异常。

1 个答案:

答案 0 :(得分:0)

这是没有看到你的代码......

我猜你已从一个SQLite类继承/扩展。

您将看到如何实现onCreate()并将数据库作为参数提供,

如果您创建一个新函数,就像createAccount函数一样,您需要获取db的句柄,如下所示: -

 public void createAccount(String account) {
    DATABASE_TABLE = account;
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL(TABLE_CREATE);
    System.out.println(DATABASE_NAME);      
}
  • 安东尼