私のアプリでは、情報を格納するSQLiteデータベースがあります。私の主な活動を開始するとき、私はデータベースを初期化します。これはデータベースのonCreateコードです:AndroidのSQLiteデータベースに書き込めません
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_OWES + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_DESC + " TEXT, " +
COLUMN_VALUE + " INTEGER" + ");";
db.execSQL(query);
}
私はボタンと2つのeditTextフィールドを持ってデータベースに情報を送信し、それを追加します。
public void addAnOwe(View v){
EditText description = (EditText) findViewById(R.id.descriptionAdd);
EditText value = (EditText) findViewById(R.id.valueAdd);
Owe newOwe = new Owe(description.getText().toString(), Integer.parseInt(value.getText().toString()));
DB.addOwe(newOwe);
Log.i(TAG, "Attempting to add Owe");
updateLists();
}
public void updateLists(){
descriptionList = DB.DBtoArray("desc");
valueList = DB.DBtoArray("value");
oweAdapter.updateValues(valueList);
oweAdapter.updateDescriptions(descriptionList);
updateTotalViewText();
}
DBManagerの中にコード:ボタン押下でトリガ活性のコードのログメッセージの全てがDBManagerのを示している。この時点で
public void addOwe(Owe owe){
ContentValues values = new ContentValues();
String description = owe.get_desc();
String value = String.valueOf(owe.get_value());
values.put(COLUMN_DESC, description);
values.put(COLUMN_VALUE, value);
Log.i(TAG, "Attempting to add: " + description + " - " + value);
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_OWES, null, values);
db.close();
}
は、説明の両方を受信しています値を正しく入力してください。しかし、私はデータベースから情報を読み取るために私が使用する2つの方法があります。二つ目は、私は他の場所の場合には、私の方法が間違って書かれていたからコピー方法databaseToString()、で呼び出され
public String[] DBtoArray(String column){
SQLiteDatabase db = getWritableDatabase();
Cursor c = db.rawQuery("SELECT * FROM " + TABLE_OWES + " WHERE 1", null);
String[] array = new String[c.getCount()];
int i = 0;
while(c.moveToNext()){
array[i] = c.getString(c.getColumnIndex(column));
i++;
}
Log.i(TAG, "String of db is " + databaseToString());
Log.i(TAG, "Array Log is " + Arrays.toString(array));
return array;
}
:最初のものは、私は自分自身を書きました。
public String databaseToString(){
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_OWES + " WHERE 1";
//Cursor points to a location in your results
Cursor c = db.rawQuery(query, null);
//Move to the first row in your results
c.moveToFirst();
//Position after the last row means the end of the results
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex(COLUMN_DESC)) != null) {
dbString += c.getString(c.getColumnIndex(COLUMN_DESC));
}
c.moveToNext();
}
db.close();
return dbString;
}
DBtoArrayのロガーは、データベースが空であることを示しています。 addAnOwe()メソッドで見られるように、メソッドは順番に呼び出されています。データが保存されないのはなぜですか?
データベースクラスでSQLiteOpenHelperを拡張していますか?私が最初に見ることができるものはすべてよく見えます。 – user3331142
はい、私はすべての必要なクラスを拡張しているので、コードにエラーはありません。 – Saamoz