2015-04-07 81 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一般。并不需要终止分号。

相关问题