1

Android アプリを開発していますが、テキストビューに主キーを表示して、テキストフィールドを編集するたびに主キーを使用して更新したいと考えています。以下は、sqlite でのデータの挿入です。私の問題は、主キーを取得する方法です...

public class UsedataActivity extends Activity {
    DatabaseHandler db = new DatabaseHandler(this);
    ImageButton evsave;
    EditText evname;
    EditText evtime;
    EditText evdate;
    EditText evcode;
    TextView evadmin;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_onetoone);

        evsave = (ImageButton)findViewById(R.id.event_save);
        evname = (EditText)findViewById(R.id.eventname);
        evtime = (EditText)findViewById(R.id.time1);
        evdate = (EditText)findViewById(R.id.eventdate);
        evcode = (EditText)findViewById(R.id.eventcode);
        evadmin = (TextView)findViewById(R.id.adminname_1to1);

        evsave.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Events addev =
                    new Events(evname.getText().toString(),evcode.getText().toString(),evdate.getText().toString(),Integer.parseInt(evtime.getText().toString()),evadmin.getText().toString());

                db.addEvents(addev);
                Toast.makeText(getApplicationContext(), "Event:  "+ evname.getText()+" successfully save",
                               Toast.LENGTH_SHORT).show();
            }
        });
    }

データベース ハンドラ クラス:

public void addEvents(Events event) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_EV_NAME, event.get_name());
    values.put(KEY_EV_PASS, event.get_pass());
    values.put(KEY_EV_DATE, event.get_date());
    values.put(KEY_EV_TIME, event.get_time());
    values.put(KEY_EV_ADMIN, event.get_admin());
    // Inserting Row
    db.insert(TABLE_EVENTS, null, values);
    db.close();
}
4

1 に答える 1

1

SQLiteDatabase のドキュメントからわかるようdb.insertに、新しく作成されたオブジェクトの ID が返されます。それをaddEvents返してください(「無効」ではなく)。

PS: コメントではなく、質問の編集にコードを貼り付けてください。コメントでは、彼らは本当にひどいように見えます!

編集

public long addEvents(Events event) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_EV_NAME, event.get_name());
    values.put(KEY_EV_PASS, event.get_pass());
    values.put(KEY_EV_DATE, event.get_date());
    values.put(KEY_EV_TIME, event.get_time());
    values.put(KEY_EV_ADMIN, event.get_admin());
    // Inserting Row
    long id = db.insert(TABLE_EVENTS, null, values);
    db.close();
    return id;
}

その後:

long id = db.addEvents(addev);
Toast.makeText(getApplicationContext(),
               "Event with id:  "+ id + " successfully saved",
               Toast.LENGTH_SHORT).show();
于 2013-10-13T08:20:45.830 に答える