0
每次我使用數據庫其空,我只是不明白。Android的sqlight - 始終爲空
我使用的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;
}
}
每當我調用這個類(我認爲初始化它的一個instace:mDbHelper = new GameSQLHelper(this);
其中,這是一個活動)
我總是讓我的mDbHelper爲null,我該如何改變它?這是我第一次使用mysql平臺以外的SQL工作,所以我有點理解這個概念,而android記事本的例子並沒有幫助我。
請問您能否給出一個解釋上述的例子。 thanx – 2010-06-18 16:57:10
有人可以給我看一個例子嗎? – 2010-06-19 21:08:02