我创建了一个将数据插入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());
}
}
pzz家伙......帮我一个人......
答案 0 :(得分:0)
使用data.contains(myname)
,您试图检查myname
变量中是否有data
类型的字符串,但事实上,您的data
类型{{1}因此,当您调用传递字符串的List<Map<String,String>>
方法时,您正在contains(Object object)
和equals
之间执行Map<String,String>
操作,这显然会导致String
。所以我建议你写这样的东西
false
或者有更好的方法,只需将查询更改为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();
}
并检查结果集是否为空。