2013-10-13 2 views
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(); 
} 
+0

Что такое 'DatabaseHandler' что делает' метод addEvents' делать? –

+0

databasehandler класс, который я использую для создания таблицы и столбцов и addevent является метод в классе, который получит значения занесены абонентским –

+0

базы данных обработчика класса общественных недействительными addEvents (События события) { \t \t SQLiteDatabase дБ = this.getWritableDatabase(); \t \t \t \t ContentValues ​​values ​​= new ContentValues ​​(); \t \t values.put (KEY_EV_NAME, event.get_name()); \t \t values.put (KEY_EV_PASS, event.get_pass()); \t \t values.put (KEY_EV_DATE, event.get_date()); \t \t values.put (KEY_EV_TIME, event.get_time()); \t \t values.put (KEY_EV_ADMIN, event.get_admin()); \t \t \t \t // Вставка строки \t \t db.insert (TABLE_EVENTS, NULL, значения); \t \t db.close(); \t} –

ответ

1

Как можно заметить из docs for the SQLiteDatabase, db.insert возвращает идентификатор вновь созданного объект. Просто сделайте addEvents верните его (вместо того, чтобы быть `void).

PS: Введите код в редакцию вопроса, а не комментарии. В комментариях они действительно выглядят ужасно!

EDIT

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(); 
+0

, как я это сделаю? Im new для android вы можете помочь pls .. –

+0

@NicaSantos Я добавил соответствующий код –

+0

спасибо boris, он действительно работает! : D –

Смежные вопросы