Sqlite Update!!

  • 2 Antworten
  • Letztes Antwortdatum
N

newperson

Neues Mitglied
1
Hallo ich habe eine Frage bei Sqlite Update. Leider weiß ich einfach nicht was ich falsch gemacht habe, daher bitte ich um Hilfe :D
Meine App besteht aus der MainActivity mit einer ListView die die aktuellen Daten anzeigt.
Mit einem Button Add kann man auf der DetailsActivity die Namen hinzufügen.
Wenn ich auf der ListView ein Name anklicke (OnItemClick) komm ich auf die EditActivit, auf der ich dann das eine Item updaten kann. Leider wenn ich diesen einen Namen updaten möchte funktioniert es nicht.
Konkret: wenn ich auf update klicke geschieht überhaupt nichts, es kommt auch keine Fehlermeldung?!
Derzeit kann ich nur Namen hinzufügen, leider nicht updaten.

Danke für EURE HILFE :))

Hier der Code:
MainActivity
Code:
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView arg0, View view, int position,
                                    long id) {
                // TODO Auto-generated method stub
                Bundle passdata = new Bundle();
                Cursor listCursor = (Cursor) arg0.getItemAtPosition(position);
                int nameId = listCursor.getInt(listCursor
                        .getColumnIndex(myDbHelper.KEY_ROWID));
                // Toast.makeText(getApplicationContext(),
                // Integer.toString(nameId), 500).show();
                passdata.putInt("keyid", nameId);
                Intent passIntent = new Intent(MainActivity.this,
                        EditActivity.class);
                passIntent.putExtras(passdata);
                startActivity(passIntent);
            }
        });
    }

EditActivity
Code:
public class EditActivity extends AppCompatActivity implements View.OnClickListener{

    DBAdapter myAdapter;
    DbHelper myDbHelper;
    EditText edtName_modify;
    Button btnUpdate;
    int rowId;
    Cursor c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit);

        openDB();

        edtName_modify = (EditText) findViewById(R.id.edtName_modify);
        btnUpdate = (Button) findViewById(R.id.btnUpdate);
        btnUpdate.setOnClickListener(this);

        Bundle showData = getIntent().getExtras();
        rowId = showData.getInt("keyId");
        myAdapter = new DBAdapter(this);

        c = myAdapter.queryAll(rowId);

        if (c.moveToFirst()){
            do{
                edtName_modify.setText(c.getString(1));

            }while (c.moveToNext());
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnUpdate:
                myAdapter.updateRow(rowId, edtName_modify.getText().toString());
                finish();
                break;
        }

    }

    private void openDB() {
        myAdapter = new DBAdapter(this);
        myAdapter.open();
    }

    private void closeDB() {
        myAdapter.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        closeDB();
    }
}

DbAdapter
Code:
    public long updateRow(long rowId, String task) {
        String where = DbHelper.KEY_ROWID + "=" + rowId;
        ContentValues newValues = new ContentValues();
        newValues.put(DbHelper.KEY_TASK, task);
        SQLiteDatabase db = myDBHelper.getWritableDatabase();
        long val = db.update(DbHelper.DATABASE_TABLE, newValues, where, null);
        close();
        return val;
    }

    public Cursor queryAll(int nameId) {
        String[] cols = {myDBHelper.KEY_ROWID, myDBHelper.KEY_TASK};
        SQLiteDatabase db = myDBHelper.getWritableDatabase();
        Cursor c = db.query(myDBHelper.DATABASE_TABLE,cols,myDBHelper.KEY_ROWID + "=" + nameId, null,null,null,null);
        return c;
    }
 
Bist du da einmal mit dem Debugger durch gegangen? Wird deine update Methode angesteuert? Wird dieser Update Methode das richtige Objekt übergeben? Enthält dieses Objekt die korrekte ID?
 
  • Danke
Reaktionen: newperson
Danke Madlip :)
ich habe den Fehler gefunden.
Hab die DATABASE_VERSION nie erhöht
 
Zurück
Oben Unten