내 애플 리케이션에서 SQLite - DB를 생성/읽기와 함께 몇 가지 어려움을 실행했습니다.안드로이드 애플 리케이션에서 SQLite - DB를 동결
나를 옆에있는 here으로 만들었습니다. 데이터베이스를 (예, 웃어) 내 지뢰밭 앱에 구현하여 폭, 높이 및 광산 개수를 놀이터에 저장하고 싶었습니다.
내가 같은 테이블의 생각 : 나는이 코드를 가지고이를 위해+-----------+--------+-----+
| Field | Type | Key |
+-----------+--------+-----+
| _bez | text | pri |
| _x | int | |
| _y | int | |
| _a | int | |
+-----------+--------+-----+
, 내 생각이 지금까지 모두 잘해야한다 :
public class SettingsDB extends SQLiteOpenHelper {
//DB-Info
private static final int DATENBANK_VERSION = 1;
private static final String DATENBANK_NAME = "minesweeper.db";
private static final String TABLE_SETTINGS = "settings";
//Spalten der Settings-Tabelle
private static final String KEY_BEZ = "bez";
private static final String KEY_X = "x";
private static final String KEY_Y = "y";
private static final String KEY_A = "a";
public SettingsDB(Context context) {
super(context, DATENBANK_NAME, null, DATENBANK_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createDB;
createDB = "CREATE TABLE " + TABLE_SETTINGS + "("
+ KEY_BEZ + " TEXT PRIMARY KEY, "
+ KEY_X + " INTEGER, "
+ KEY_Y + " INTEGER, "
+ KEY_A + " INTEGER)";
db.execSQL(createDB);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SETTINGS);
onCreate(db);
}
}
내가 원하는이 테이블을 보통, 네 가지 표준 행, 쉬운 값, 중간 값, 있었음 모드 및 현재 값 (레이아웃의 세 EditText 필드를 통해 사용자가 변경할 수 있음) 값으로 채 웁니다.
따라서 이러한 기본 값을 (db를 작성한 직후에) 추가하고, 사용자에게 현재 값을 표시하고, 설정 값이 저장 될 때 현재 값으로 행을 갱신하는 메소드가 필요합니다.
다음가 - 다시 혀를 기반으로 -이 있습니다
public void set_stdValues() {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues val_easy = new ContentValues();
val_easy.put(KEY_BEZ, "Easy");
val_easy.put(KEY_X, 10);
val_easy.put(KEY_Y, 10);
val_easy.put(KEY_A, 10);
db.insert(TABLE_SETTINGS, null, val_easy);
ContentValues val_curr = new ContentValues();
val_curr.put(KEY_BEZ, "Curr");
val_curr.put(KEY_X, 10);
val_curr.put(KEY_Y, 10);
val_curr.put(KEY_A, 10);
db.insert(TABLE_SETTINGS, null, val_curr);
ContentValues val_med = new ContentValues();
val_med.put(KEY_BEZ, "Med");
val_med.put(KEY_X, 12);
val_med.put(KEY_Y, 12);
val_med.put(KEY_A, 20);
db.insert(TABLE_SETTINGS, null, val_med);
ContentValues val_hard = new ContentValues();
val_hard.put(KEY_BEZ, "Hard");
val_hard.put(KEY_X, 15);
val_hard.put(KEY_Y, 15);
val_hard.put(KEY_A, 40);
db.insert(TABLE_SETTINGS, null, val_hard);
db.close();
}
public Settings getValues(String diff) {
SQLiteDatabase db = this.getReadableDatabase();
String[] cols = new String[] { KEY_BEZ, KEY_X, KEY_Y, KEY_A };
Cursor cursor = db.query(TABLE_SETTINGS, cols, KEY_BEZ + "=?", new String[] { diff }, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
Settings settings = new Settings(cursor.getString(0), cursor.getInt(1), cursor.getInt(2), cursor.getInt(3));
cursor.close();
db.close();
return settings;
}
// public Settings(String bez, int x, int y, int a)
public void setValues(Settings s) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_X, s.get_x());
values.put(KEY_Y, s.get_y());
values.put(KEY_A, s.get_a());
db.update(TABLE_SETTINGS, values, KEY_BEZ + "=?", new String[] { "Curr" });
db.close();
}
이 데이터를 DB에서 읽을 수 있어야 지점에서 정지 앱을 실행.
나는이 정보가 누군가 내가 실수 한 것을 알아낼 수 있기를 바랍니다.
미리 감사드립니다.
set_stdValues ()가 어떤 클래스를 속하는가? –
이것과 다음 두 가지는 SettingsDB –