我是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();
}
}
答案 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) {
}
}