java web 数据库编程

来源:百度知道 编辑:UC知道 时间:2024/07/05 06:19:41
在数据库里,类似select count(*) from user;这种统计语句,在java里要怎么取出对应查询值,是不是还用ResultSet,然后getInt(1)?

这是我写的统计一个部门男性人数的方法
---------------------------------
//男性信息统计
public static int infoStatBySexOfMale(String dept){
int result=0;
Connection conn = DBDAO.getConnection();
PreparedStatement ptmt = null;
ResultSet rs = null;
String sql = "select count('男')as c1 from user where dept='"+dept+"'";
try {
ptmt = conn.prepareStatement(sql);
rs = ptmt.executeQuery(sql);
rs.first();
result=rs.getInt("c1");
System.out.println(result);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

执行之后返回总是0,我直接用那条语句在mysql里面运行的时候,可以显示正确的结果1,但是跟java结合起来就不行了,其他的增删查改操作都没问题,因为之前都没有做过统计类语句的操作,所以一直解决不了,rs.next()和rs.first()我都试过了,结果都一样,请问高手是哪里出问题了呢?
谢谢2楼的,getInt(1)之前也试过,同样得不

楼上的乱说 getString()方法是从 1 开始的,不是从0.
你这个问题可能是这样的 String sql = "select count('男')as c1 from user where dept='"+dept+"'"; 这个sql语句中的 as c1 在数据库中当然没问题,但是你result=rs.getInt("c1"); 就有问题了,getInt()方法后的参数是你结果集中的index或者是数据库中的列名,这个sql语句得到结果集中的数据肯定就一条 ,所以你直接 result=rs.getInt(1); 试试看 我也没试过 你看对不对。

我看了下你的代码,这里有问题rs = ptmt.executeQuery(sql); PreparedStatement.executeQuery()这个方法是没有参数的,你加上了参数,因为PreparedStatement是Statement的子类,这样实际上是调用了Statement.executeQuery(sql)这个方法,而你并没有在数据库端编译sql语言,所以返回的rs是空的。

把参数去掉试试
ptmt = conn.prepareStatement(sql);
rs = ptmt.executeQuery(); //去掉参数
rs.first();

将你写的“rs = ptmt.executeQuery(sql);
rs.first();
result=rs.getInt("c1"); ”
改成:
rs = ptmt.executeQuery(sql);
while(rs.next){
result=rs.getInt("c1");
}
试试看吧

你真的运行了吗?
user在数据库中是关键字,如果不是当关键字使用,要加[user];

观战..