检查android中的数据库中是否已存在该行

时间:2013-06-18 03:35:03

标签: android sqlite registration

请帮帮我。我正在尝试制作一个可以节省消费者数据的注册应用程序。用户需要与他想要注册的公司一起输入他的完整名称。只要它在不同的公司,他就可以多次注册。我在下面的代码中的问题是程序只比较他输入的第一个数据的用户输入。例如,用户输入他的名字,公司是ABC,程序接受它,当用户再次输入他的名字并且公司是DEF时程序仍然接受它,但当用户输入他的名字和公司DEF时,程序仍然接受它是错误的,当你在ABC改变公司时,程序不接受它。所以我看到的是我的代码只比较了输入的第一个信息的数据。

这是我的代码:

在我的databaseAdapter

public Constructor getNameCp(String name) 
{
    SQLiteDatabase db = this.getReadableDatabase();
    Constructor consName = new Constructor();
    try 
    { 
        Cursor c = db.query(Constants.DATABASE_TABLE_CONSUMER,null, Constants.CONSUMER_FULLNAME + "=?", new String[]{String.valueOf(name)},null, null, null);                                               
        if (c == null) 
        {                        
            return consName;                                   
        }

        else{    
            c.moveToFirst();               
            consName = new Constructor(Integer.parseInt(c.getString(0)),c.getString(c.getColumnIndex(Constants.CONSUMER_EMPNO)),c.getString(c.getColumnIndex(Constants.CONSUMER_FULLNAME)), c.getString(c.getColumnIndex(Constants.CONSUMER_CELLPHONENO)), c.getString(c.getColumnIndex(Constants.CONSUMER_COMPANY)));
        }                   
    }catch(Exception e){
        e.printStackTrace();
    }
    return consName; 
}

在我的活动中

String name = databaseAdapter.getNameCp(fullName).getConsumerFullname();
String comp = databaseAdapter.getNameCp(fullName).getCompanyname();

if ((fullName.equals(name)) && (companyName.equals(comp))){
    UpdateByEmployeeName(fullName);
    Toast.makeText(RegistrationActivity.this, "Account info already exist.", Toast.LENGTH_LONG).show();
}else{
    String currentDateandTime = sdf.format(new Date());
    databaseAdapter.SaveConsumerDetails(new Constructor(Emp.toUpperCase(), Lastname, Firstname, Middlename.toUpperCase(), Cp, Email, fullName, careFriend, companyName, emailmark, currentDateandTime, consumerId, consumercompanycode));
refresh();
}

1 个答案:

答案 0 :(得分:0)

在数据库类中使用以下方法获取特定员工姓名的所有公司的列表:

public ArrayList<String> getCompName(String name) {

    ArrayList<String> alCompNm = new ArrayList<String>();

    try {
        Cursor c = db.rawQuery("select CompName FROM projsitemast where Name='"+name+"'", null);
        if (c != null) {
            c.moveToFirst();
            for (int j = 0; j < c.getCount(); j++) {
                alCompNm.add(c.getString(0));
                System.out.println("Client Site Name : " + c.getString(0));
                c.moveToNext();
            }
            c.close();
        }
        return alCompNm;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return alCompNm;
}

在您的主要活动中:

flag = 0;
ArrayList<String> cNm = new ArrayList<String>();
dba.open();
cNm = dba.getCompName(yourname);

for(int i=0;i< cNm.size();i++){
   String cmpname = cNm.get(i).toString();

   if(cmpname.equals(yourcmpname)){
           flag = 1;
      }
}

if(flag==0){
String currentDateandTime = sdf.format(new Date());
    databaseAdapter.SaveConsumerDetails(new Constructor(Emp.toUpperCase(), Lastname, Firstname, Middlename.toUpperCase(), Cp, Email, fullName, careFriend, companyName, emailmark, currentDateandTime, consumerId, consumercompanycode));
refresh();
// OR as per your requirement
}
else{
Toast.makeText(RegistrationActivity.this, "Account info already exist.", Toast.LENGTH_LONG).show();
}