1

アプリケーションにユーザー情報を保存しようとしています。従業員番号の editText と会社の EditText があります。従業員番号は必須フィールドではないため、テーブルに null 値を含めることができます。私の問題は、ユーザーが入力した従業員番号がデータベースに既に存在するかどうかを比較しているときです。ユーザーが従業員番号 editText に何も入力しないと、null 値も読み取られます。誰でも私がこれを行うのを手伝ってもらえますか?

これは、すべての従業員番号を配列リストに保存し、すべての null 値を削除するコードです

ArrayList<String> employeenumber = databaseAdapter.getEmployeeNumber();
employeenumber.removeAll(Collections.singleton(null));
employeenumber.removeAll(Collections.singleton(""));

私がやりたいことは、ユーザーが従業員番号を入力すると、配列リストにそれが含まれているかどうかがチェックされ、含まれている場合は、会社がそれに対応しているかどうかがすべてチェックされます。重複エントリをトラップする必要があります。たとえば、従業員番号が 1234 で会社が ABCD の場合、プログラムはそれを受け入れてはなりません。私を助けることができる人に感謝します。

4

1 に答える 1

1

最初に、ユーザーが従業員番号 editText に何かを入力したかどうかを確認します。次に、int フラグを使用して比較します。メイン アクティビティで以下のコードを試してください。

int flag1 = 0;
if (!Emp.equals(""))
{
    ArrayList<String> CompanyandEmp = new ArrayList<String>();
    CompanyandEmp = databaseAdapter.getCompanyEmp(Emp);
    CompanyandEmp.removeAll(Collections.singleton(""));
    for(int i=0;i< CompanyandEmp.size();i++)
      {
        String cmpemp = CompanyandEmp.get(i).toString();
        if(cmpemp.equalsIgnoreCase(companyName))
          {
             flag1 = 1;
          }
    }
}

if (flag1 == 0)
{
//as per your requirement
}else{
     Toast.makeText(RegistrationActivity.this, "Account info already exist.", Toast.LENGTH_LONG).show();
}

次に、databaseAdapter で次のようにします。

public ArrayList<String> getCompanyEmp(String emp) {

    SQLiteDatabase db = this.getReadableDatabase();
    ArrayList<String> companyemp = new ArrayList<String>();

    try {
       Cursor c = db.query("select CompName FROM projsitemast where Emp='"+emp+"'", null);
        if (c != null) {
            c.moveToFirst();
            for (int j = 0; j < c.getCount(); j++) {
                companyemp.add(c.getString(0));
                c.moveToNext();
            }
            c.close();
        }
        return companyemp;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return companyemp;
}
于 2013-06-19T00:48:32.727 に答える