- Forum-Beiträge: 6
03.05.2015, 19:57:59 via Website
03.05.2015 19:57:59 via Website
Hi zusammen,
ich habe mir folgende Testapp für eine DB-Verbindung geschrieben. Mein Problem ist jedoch, dass die Anzahl der Einträge in der Datenbank laut Ausgabe/Log immer um einen Eintrag vermindert ist, als diese eigentlich sein sollte.
Kann mir hier jemand weiterhelfen?
Vielen Dank!
relevanter Teil aus der MainActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.db = new Database(getApplicationContext());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
db.insert();
return true;
}
return super.onOptionsItemSelected(item);
}
relevater Teil aus der DB-Klasse
public class Database extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_db";
private static final String TABLE_NAME = "test";
private static final String TEST_VALUE = "test_value";
private static final int DATABASE_VERSION = 2;
private static final String TABLE_CREATE =
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
TEST_VALUE + " TEXT);";
Database(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(TABLE_CREATE);
Log.e("DB_SUCCESS", "" + TABLE_CREATE);
} catch (Exception e) {
Log.e("DB_ERROR", e.getMessage());
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void setQuery(String p_query) {
SQLiteDatabase db = this.getWritableDatabase();
Log.e("DB_QUERY", "" + p_query);
db.execSQL(p_query);
Log.e("DB_COUNT", "" + getRowsCount());
}
public void insert() {
String query = "INSERT INTO " + TABLE_NAME + " (" + TEST_VALUE +") VALUES ('3')";
this.setQuery(query);
}
public int getRowsCount(){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
int count = 0;
if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
count++;
}
}
return count;
}
}
— geändert am 03.05.2015, 20:05:36
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.