SQLite 데이터베이스를 사용하여 몇 개의 문자열을 저장하고 있습니다. 첫 번째 응용 프로그램을 시작할 때이 코드를 사용하여이 문자열을 추가합니다.안드로이드 : DataBase 테이블이 이미 존재하는지 어떻게 알 수 있습니까?
DatabaseHandler db = new DatabaseHandler(this);
db.addProducts(//lot of strings appended to make a single String);
db.close();
DatabaseHandler은 다음과 같습니다
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "my_db";
private static final String TABLE_NAME = "products";
private static final String KEY_NAME = "pname";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_PRODUCTS_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ KEY_NAME + " TEXT" + ")";
db.execSQL(CREATE_PRODUCTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void addProducts(String product_name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, product_name); // Product Name
db.insert(TABLE_NAME, null, values);
db.close();
}
public String getProducts() {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(selectQuery, null);
String s = "default";
if (cursor.moveToFirst()) {
int n = cursor.getCount();
s = cursor.getString(0);
}
cursor.close();
return s;
}
}
문제는 내가 테이블 products
이 있는지 여부를 확인하고 있지 않다 경우, 내가 응용 프로그램을 lauched 때마다 시간 db.addProducts("");
를 호출합니다. 그리고 커서 카운트가 매번 1
증가하고 결국 need to extend db
그런 말합니다. 테이블이 이미 있는지 확인하려면 어떻게해야합니까 ??
I는이를 찾을 수 있습니다 How to check if database exists
을 :
public static boolean checkDataBase(String DB_FULL_PATH) {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
}
return checkDB != null ? true : false;
}
나는 경로로 붙어있다. 어떻게하면 데이터베이스의 경로를 얻을 수 있습니까?
또한 데이터베이스가 아닌 테이블이 있는지 여부를 확인하면 유용 할 것입니다.
이 늘 테이블마다
APP_NAME은 String.xml 리소스에있는 appName입니다. 데이터베이스 란 무엇입니까? –
과 Environment.getDataDirectory()는 파일을 toString()을 호출하고 PATH에 사용해야합니까? –
Environment.getDataDirectory()는 데이터 디렉토리를 반환합니다. databases는 db를 찾을 수있는 디렉토리입니다. App_Name은 응용 프로그램의 패키지 이름입니다. – goojr