2013-07-27 1 views
1

Я создал приложение, которое вставляет данные в sql-сервер. Я сделал столбец NAME уникальным ключом. Я хочу, чтобы, если я ввожу то же имя с помощью edittext для вставки ... он должен дать тост-сообщение. но этого не происходит. я не могу понять, где я сделал ошибку. в связи с сервером проблем нет. единственное, что я должен показать Toast msg, если я снова ввела то же имя. мой код .......отображение тоста в условных выражениях в android

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 парни ... помочь мне кто-то ...

+0

Записываются ли записи в базу данных с использованием этого кода? –

+0

Где вы указали переменную контекста 'c'? – yugidroid

+0

i объявить контекст c как глобальный – 12345

ответ

0

С data.contains(myname) вы пытаетесь проверить, есть ли myname типа бечевки в data varible, но, на самом деле, ваш data имеет тип 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(); 
} 

или есть лучший способ, просто изменить ваш запрос SELECT * FROM FORM1 WHERE NAME = myname и проверить, если ваш результирующий набор пуст.