检查该行已经在Android中的数据库中 [英] Check if the row already exist in database in android

查看:132
本文介绍了检查该行已经在Android中的数据库中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我。我试图做一个登记程序,将节省消费者的数据。用户需要与他想注册公司共同进入他的全名。只要它是在不同的公司,他可以登记的许多倍。下面我在我的code问题是程序只比较上,他进入第一个数据的用户输入。例如,用户输入自己的名字和公司是ABC,程序接受它,当用户再次输入他的名字和公司是DEF程序仍然接受它,但是当用户再输入自己的名字和公司DEF节目还是收下这是不对的,当你改变该公司在美国广播公司节目没有接受。所以,我看到的是,我的code只比较上输入的第一信息的数据。

这是我的code:

在我的databaseAdapter

 公共构造getNameCp(字符串名称)
{
    SQLiteDatabase分贝= this.getReadableDatabase();
    构造consName =新的构造函数();
    尝试
    {
        光标C = db.query(Constants.DATABASE_TABLE_CONSUMER,空,Constants.CONSUMER_FULLNAME +=?,新的String [] {将String.valueOf(名)},NULL,NULL,NULL);
        如果(C == NULL)
        {
            返回consName;
        }        其他{
            c.moveToFirst();
            consName =新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)));
        }
    }赶上(例外五){
        e.printStackTrace();
    }
    返回consName;
}

在我的活动

 字符串名称= databaseAdapter.getNameCp(全名).getConsumerFullname();
字符串补偿= databaseAdapter.getNameCp(全名).getCompanyname();如果((fullName.equals(名称))及及(companyName.equals(化合物))){
    UpdateByEmployeeName(全名);
    Toast.makeText(RegistrationActivity.this,帐户信息已经存在。Toast.LENGTH_LONG).show();
}其他{
    字符串currentDateandTime = sdf.format(新的Date());
    databaseAdapter.SaveConsumerDetails(新构造函数(Emp.toUpperCase(),姓氏,名字,Middlename.toUpperCase(),CP,电子邮件,全名,careFriend,公司名称,emailmark,currentDateandTime,consumerId,consumercompany code));
刷新();
}


解决方案

使用下面的方法在你的数据库类让所有公司特定员工姓名的名单:

 公开的ArrayList<串GT; getCompName(字符串名称){    ArrayList的<串GT; alCompNm =新的ArrayList<串GT;();    尝试{
        光标C = db.rawQuery(选择从COMPNAME哪里projsitemast名='+姓名+',NULL);
        如果(C!= NULL){
            c.moveToFirst();
            对于(INT J = 0; J< c.getCount(); J ++){
                alCompNm.add(c.getString(0));
                的System.out.println(客户端站点名称:+ c.getString(0));
                c.moveToNext();
            }
            c.close();
        }
        返回alCompNm;
    }赶上(例外五){
        e.printStackTrace();
    }
    返回alCompNm;
}

在您的主要活动:

 标志= 0;
ArrayList的<串GT; CNM =新的ArrayList<串GT;();
dba.open();
CNM = dba.getCompName(提供yourname);的for(int i = 0; I< cNm.size();我++){
   串cmpname = cNm.get(ⅰ)的ToString();   如果(cmpname.equals(yourcmpname)){
           标志= 1;
      }
}如果(标志== 0){
字符串currentDateandTime = sdf.format(新的Date());
    databaseAdapter.SaveConsumerDetails(新构造函数(Emp.toUpperCase(),姓氏,名字,Middlename.toUpperCase(),CP,电子邮件,全名,careFriend,公司名称,emailmark,currentDateandTime,consumerId,consumercompany code));
刷新();
//或者按您的要求
}
其他{
Toast.makeText(RegistrationActivity.this,帐户信息已经存在。Toast.LENGTH_LONG).show();
}

please help me. I'm trying to make a registration app that will save consumer's data. The user needs to enter his complete name together with the company he wants to register to. He can register many times as long as it is in different company. My problem in my code below is that the program only compare the user input on the first data he enter. for example, the user enter his name and the company is ABC, the program accept it, when the user enter again his name and the company is DEF the program still accept it, but when the user enter his name and the company DEF again the program still accept it which is wrong, when you change the company in ABC the program did not accept it. So what I see is that my code only comparing the data on the first info entered.

here's my code:

in my 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; 
}

in my activity

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

解决方案

Use below method in your database class for getting list of all companies for particular employee name:

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;
}

In your Main Activity:

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

这篇关于检查该行已经在Android中的数据库中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆