每次我使用db时,它都是null,我就是不接受它。
当我有查询时,我将此代码用于SQL:
public class GameSQLHelper {
static final String[] COUNTRIES = new String[] {
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra"
};
private static final String DB_PATH = "/countryCityGame/databases/";
private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;
private final Context mCtx;
// Table name
public static final String TABLE = "myDataBase";
// Columns
public static final String LETTER = "letter";
public static final String TYPE = "type";
public static final String VALUE = "value";
//my database
SQLiteDatabase myDataBase;
private static class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = null;
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "( " + BaseColumns._ID
+ " integer primary key autoincrement, " + LETTER + " text not null, "
+ TYPE + " text not null," + VALUE + " text not null );";
Log.d("EventsData", "onCreate: " + sql);
db.execSQL(sql);
insertValuesToDB(db);
}
private void insertValuesToDB(SQLiteDatabase db) {
if (db == null){
}
else{
db.execSQL("INSERT INTO "
+ TABLE
+ " ("+LETTER+","+ TYPE +"," + VALUE +")"
+ " VALUES ('A', 'country', 'Angola');");
ContentValues initialValues = new ContentValues();
for (int i = 0 ; i < COUNTRIES.length ; i++){
Character tmp = (Character)COUNTRIES[i].charAt(0);
initialValues.put(VALUE, COUNTRIES[i]);
initialValues.put(TYPE, "country");
initialValues.put(LETTER,tmp.toString(tmp));
db.insert(TABLE, null, initialValues);
}
}
}
@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 notes");
onCreate(db);
}
}
/**
* Constructor - takes the context to allow the database to be
* opened/created
*
* @param ctx the Context within which to work
*/
public GameSQLHelper(Context ctx) {
this.mCtx = ctx;
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion)
return;
String sql = null;
if (oldVersion == 1)
sql = "alter table " + TABLE + " add note text;";
if (oldVersion == 2)
sql = "";
Log.d("EventsData", "onUpgrade : " + sql);
if (sql != null)
db.execSQL(sql);
}
public void openDataBase() throws SQLException{
//Open the database
String myPath = DB_PATH + DATABASE_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
public boolean existInDataBase(String serchStr ){
Cursor c = null ;
try{
openDataBase();
c = myDataBase.query(true, TABLE, new String[] {TYPE
}, VALUE + "=" + serchStr, null,
null, null, null, null);
}
catch(Exception e){
Log.d("sqlExacption", e.getMessage());
}
if (c == null)
return false;
return true;
}
}
每当我打电话给这个班级时(我会对其进行初始化:mDbHelper = new GameSQLHelper(this);
这是一项活动)
我总是把我的mDbHelper作为null我怎么能改变它?这是我第一次在mysql平台之外使用SQL,所以我有点理解这个概念,而android记事本示例并没有帮助我。
答案 0 :(得分:0)
不要通过SQLiteDatabase#openDatabase
打开数据库。而是创建DatabaseHelper
的实例并在其上调用getWritableDatabase
。