1

请帮我。我正在尝试制作一个可以保存消费者数据的注册应用程序。用户需要输入他的全名以及他要注册的公司。只要是在不同的公司,他可以多次注册。我在下面的代码中的问题是程序只比较用户输入的第一个数据。例如,用户输入他的姓名和公司是 ABC,程序接受它,当用户再次输入他的姓名和公司是 DEF 时,程序仍然接受它,但是当用户再次输入他的姓名和公司 DEF 时程序仍然接受这是错误的,当您在ABC中更改公司时,程序不接受它。所以我看到的是我的代码只比较输入的第一个信息的数据。

这是我的代码:

在我的数据库适配器中

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();
}
4

1 回答 1

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();
}
于 2013-06-18T04:50:57.887 回答