1

我创建了一个将数据插入到 sql server 的应用程序。我将列 NAME 作为唯一键。我希望如果我通过edittext输入相同的名称以插入...它应该给出一个祝酒词。但它没有发生。我不明白我在哪里犯了错误。连接服务器没有问题。唯一的事情是,如果我再次输入相同的名称,我必须显示 Toast msg。我的代码是.......

public void onClick(View v) {
                    // TODO Auto-generated method stub

                    String myloc=loc.getText().toString();
                    String myname=name.getText().toString();
                    String myphone=phone.getText().toString();
                    initilize();
                    ResultSet rs;
                     try{
                    Statement statement=connect.createStatement();
                    rs=statement.executeQuery("SELECT * FROM FORM1");
                     List<Map<String,String>>data=null;
                     data=new ArrayList<Map<String,String>>();
                     while(rs.next()){
                         Map<String,String>datanum=new HashMap<String,String>();
                         datanum.put("a", rs.getString("NAME"));
                         data.add(datanum);
                     }
                     if(data.contains(myname)){
                     Toast.makeText(c, myname+" Already stored: please choose different one", Toast.LENGTH_LONG).show();
                     }
                     else{
                        insert(myname,myphone,myloc); 
                     }
                     }catch(Exception e){
                            Log.e("ERROR", e.getMessage()); 
                         }


                }

plzz 伙计们...帮帮我...

4

1 回答 1

0

随着data.contains(myname)您尝试检查变量中是否存在mynameString 类型data,但实际上您data有 type List<Map<String,String>>,因此当您调用contains(Object object)传递 String 的方法时,您正在执行andequals之间的操作,这显然总是会 result 。所以我建议你要么写这样的东西Map<String,String>Stringfalse

List<String> data = new ArrayList<String>();
while(rs.next()) {
    data.add(rs.getString("NAME"));
}
 if(data.contains(myname)){
     Toast.makeText(c, myname+" Already stored: please choose different one", Toast.LENGTH_LONG).show();
}

或者有更好的方法,只需将您的查询更改为SELECT * FROM FORM1 WHERE NAME = myname并检查您的结果集是否为空。

于 2013-07-27T12:49:03.297 回答