SQLitedatabase方法错误

时间:2014-08-11 07:40:34

标签: android sqlite

我是android的新人,正在学习SQLitedatabase。我试图建立一个新的数据库。为什么这个代码中的“openorcreatedatabese()”方法并不熟悉nd有错误。 那么toast.maketext()中的getApplicationContext()方法呢?

package com.example.sqlite_tutorial;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class MyDatabase {

String DATABASE_NAME="DATABASE";
String TABLE_NAME="MY_TABLE";
String DATABASE_CREATE="CREATE TABLE IF NOT EXISTS"+TABLE_NAME+
        "(ID INTEGER PRIMARY KEY, NAME TEXT,CITY TEXT);";

try {
    SQLiteDatabase mydb=openOrCreateDatabase(DATABASE_NAME,
            Context.MODE_PRIVATE,null);
    mydb.execSQL(DATABASE_CREATE);
}
catch(Exception e){
    Toast.makeText(getApplicationContext(), "Error in creating table",
          Toast.LENGTH_LONG).show();             
}

}

2 个答案:

答案 0 :(得分:0)

因为您没有在Context对象上调用它。例如,在Activity中,您可以访问这些方法,因为Activity扩展了Context,但不在某个任意类中。相反,使用这个:

public final class MyDatabase {

    static String DATABASE_NAME="DATABASE";
    static String TABLE_NAME="MY_TABLE";
    static String DATABASE_CREATE="CREATE TABLE IF NOT EXISTS"+TABLE_NAME+
            "(ID INTEGER PRIMARY KEY, NAME TEXT,CITY TEXT);";

    public static void createDatabase(Context context) {
        try {
            SQLiteDatabase mydb = context.openOrCreateDatabase(DATABASE_NAME,
                Context.MODE_PRIVATE,null);
            mydb.execSQL(DATABASE_CREATE);
        } catch(Exception e){
            Toast.makeText(context, "Error in creating table",
                  Toast.LENGTH_LONG).show();             
        }
    }
}

在您的活动中调用MyDatabase.createDatabase(this)。

答案 1 :(得分:0)

这可能是您的解决方案。

 public class DbHelper extends SQLiteOpenHelper {
    private static int DB_VERSION = 1;
    private static final String DB_NAME = "simpleUser.sql";
    private static DbHelper instance;

    public DbHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }
    public static synchronized DbHelper getHelper(Context context) {
            if (instance == null)
                instance = new DbHelper(context);
    return instance;
        }
    @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(Users.SQL_CREATE);
        }
    @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }