我正在使用Java和MYSQL开发数据库项目。我可以从Netbeans连接数据库,我可以插入数据。但我必须达到我的数据并选择sql语句不起作用。
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);
}
}
这些是我的助手方法。我找不到问题。
答案 0 :(得分:0)
而不是deger = r.getInt("count(*)");
尝试deger = r.getInt(0);
答案 1 :(得分:0)
您可以为列表达式指定正确的名称。
baglan("SELECT count(*) AS cnt FROM PERSONEL WHERE P_TC=?");
deger = r.getInt("cnt");
或仅使用索引:
deger = r.getInt(1); // Columns counted from 1.
一般也关闭rs。并且不需要终止分号。