2013-07-27 23 views
1

我已經創建了一個將數據插入到sql server的應用程序。我把NAME列作爲唯一鍵。 我希望如果我通過edittext輸入相同的名稱來插入...它應該給予敬酒信息。 但它沒有發生。我無法理解我犯了什麼錯誤。連接到服務器的 沒有問題。唯一的是我必須顯示吐司味精,如果我再次輸入相同的名稱。 我的代碼是.......在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

我聲明Context c爲全局 – 12345

回答

0

隨着data.contains(myname)您要檢查是否有String類型的mynamedata varible,但事實上,你data有型List<Map<String,String>>,所以當你調用contains(Object object)方法傳遞一個字符串,你Map<String,String>String,這顯然總會導致false之間進行equals操作。所以我建議你要麼寫這樣的事情

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,並檢查您的結果集爲空。