1

データベースにデータを挿入するために使用されるOnclickメソッドを使用して、最初にデータが存在するかどうかを確認したいと思います。データがある場合は、トーストメッセージが表示されます。どうすればこれを達成できますか。私のOnClickは以下の通りです。ユーザー名とパスワードがあることを確認するだけです。ある場合、ユーザーはトーストを受け取ります。

 @Override
public void onClick (View v) {

    rUsername = rName.getText().toString();
    rPasscode = rCode.getText().toString();

    RegDetails regDetails = new RegDetails();
    regDetails.setrName(bundleRegName);
    regDetails.setpCode(bundleRegCode);
    if(v.getId()==R.id.rtn_button){
        finish();

    }else if(v.getId()==R.id.reg_button){
        insertCredentials(regDetails);
    }
}
    private void insertCredentials(RegDetails regDetails){

        LoginDB androidOpenDBHelper = new LoginDB(this);
        SQLiteDatabase sqliteDB = androidOpenDBHelper.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
        contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);

        long affectedColumnid = sqliteDB.insert(LoginDB.TABLE_NAME_CREDENTIALS, null, contentValues);

        Toast.makeText(getApplicationContext(), "Credentials Saved! Please login" + affectedColumnid, Toast.LENGTH_SHORT).show();
        sqliteDB.close();
        finish();
    }   

  }
4

2 に答える 2

1

sqliteDB.insert は、成功すると long 値を返し、エラーの場合は -1 を返します。long 値は、db に新しく挿入された行の行番号を示します。この戻り値を確認して、それに応じてトーストを表示できます。

こちらの詳細な説明をご覧ください。http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insert(java.lang.String, java.lang.String, android.content.ContentValues)

つまり、コードを次のように変更します。

private void insertCredentials(RegDetails regDetails){

    LoginDB androidOpenDBHelper = new LoginDB(this);
    SQLiteDatabase sqliteDB = androidOpenDBHelper.getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
    contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);

    long affectedColumnid = sqliteDB.insert(LoginDB.TABLE_NAME_CREDENTIALS, null, contentValues);
    if(affectedColumnid != -1){
    Toast.makeText(getApplicationContext(), "Credentials Saved! Please login" + affectedColumnid, Toast.LENGTH_SHORT).show();
     }else{
     // Display error dialog or smthg
     }
    sqliteDB.close();
    finish();
}   
于 2012-08-29T01:51:41.443 に答える
1

データベースを読み取ります。cursor.getCount() >0 の場合、データが存在することを意味します。

Cursor cursor = getDbEntries();
if( cursor.getCount() > 0 ){
   // data exists
}
else{
  // data doesnt exist
}
于 2012-08-29T02:01:23.840 に答える