2015-04-07 45 views
0

我正在使用Java和MYSQL處理數據庫項目。我可以連接來自Netbeans的數據庫,並且可以向其中插入數據。但我必須達到我的數據並選擇sql語句不起作用。我可以使用Java將數據插入到我的數據庫,但無法選擇並顯示它

public int TCSorgu(String sifre) { 
     int deger=100; 
     baglan("SELECT count(*) FROM PERSONEL WHERE P_TC=?;"); 
     addPS(1, sifre); 
     r = calistir(); 
     try { 
      r.next(); 
      deger = r.getInt("count(*)"); 
      System.out.println(deger); 
     } catch (SQLException ex) { 
      Logger.getLogger(DAO_sorgu.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     baglantiyiKes(); 
     if(deger==1) 
      return 4; 
     else 
      return 2; 
    } 

這是我的代碼,我嘗試從數據庫中「選擇」。我可以從Mysql獲取數據,因此插入時沒有問題。然而,「COUNT(*)」部分給出了0的結果是,當我運行MYSQL它返回1

public void addPS(int index, String s){ 
    //System.out.println(index+s+"\n"); 
    if(ps != null){ 
     try { 
      ps.setString(index, s); 
     } catch (SQLException ex) { 
      Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 


    public ResultSet calistir(){ 

    try { 
     rs = ps.executeQuery(); 

    } catch (SQLException ex) { 
     Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    return rs; 
    //ps = null; 
} 

public synchronized void baglantiyiKes() { 
    try { 
     if (con != null) { 
      con.close(); 
     } 
    } catch (Exception e) { 
     System.err.println("baglantiyi kes hatasi : " + e); 
    } 
} 

這些都是我的輔助方法相同的查詢。我找不到問題。

+2

不要依賴名稱爲'count(*)'的列名。取而代之的是沿'SELECT count(*)AS cnt FROM PERSONEL WHERE P_TC =?'行重新命名它,然後使用'r.getInt(「cnt」)''。聲明結尾的分號不是必需的。 – Tiny

+0

'baglan()'做了什麼? – articuno

回答

0

,而不是deger = r.getInt("count(*)");嘗試deger = r.getInt(0);

0

您可能會給列表達一個合適的名字。

baglan("SELECT count(*) AS cnt FROM PERSONEL WHERE P_TC=?"); 
deger = r.getInt("cnt"); 

或簡單地使用一個索引:

deger = r.getInt(1); // Columns counted from 1. 

此外關閉RS一般。並不需要終止分號。

相關問題