注册 登录
编程论坛 J2EE论坛

select count(*) from products 得出结果令我郁闷,

zbs 发布于 2007-05-01 11:48, 1830 次点击

我在booklist.jsp中调用这个一个ID为book_list的javabean的一个
函数book_search(request)
这个函数一部份是这样的
public boolean book_search(HttpServletRequest res) throws Exception {
DataBase db = new DataBase();
db.connect();
stmt = (db.conn).createStatement ();

ResultSet rs2 =stmt.executeQuery("select count(*) from products");
while (rs2.next()){

System.out.println("number="+rs2.getInt(1));//这个地方他等于0,,为什么?


}
rs2.close()

。。。。。。。。


其中这个bean extends DataBase

DataBase 基本代码如下:


public class DataBase {
public Connection conn;
public Statement stmt;
public ResultSet rs=null;
//public Init
public boolean connect(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url ="jdbc:microsoft:sqlserver://localhost:1433;DababaseName=BookShop";
conn = DriverManager.getConnection(url,"sa","");
//stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

}
catch(Exception e){
System.out.println("connect database error");
return false;
}
return true;
}


我的问题是: 通过上面的方法 为什么得出number=0呢!
后来,我做了一个实验 做两个java,一个类extends别一个类
结果是对的

11 回复
#2
风月_无边2007-05-01 11:59
数据表和数据库有没有错 !
#3
lgdcky2007-05-01 12:01
你把
while (rs2.next()){
System.out.println("number="+rs2.getInt(1))
}
改一下
SQL语句改成select count(columnName) from products
int i=0;
while(rs2.next())
{
i++;
}
System.out.println("number="+i);
试试!
#4
zbs2007-05-01 13:24


先谢谢的回复
如果按照你的方法,number的值等于1

所以我得出的结论是 这个语句肯定是进行了查询了,但是返回的是没有值
所以 也能执行到
while(rs2.next())
{
i++;

}
所以你的方法number=1;
我在的方法number=0
换句话说,数据库是进行了查询,返回的是没有值(我在数据库和表都正确并且有值)

#5
lgdcky2007-05-01 15:42
我终于明白你的意思了!我想可能和你的查询操作有关!你的SQL查询语句查询列返回的是一个数,而你下面要查的是一个列里的值!这样是查不出什么值的!如果你把SQL语句改成select * from products因该就可以了!我那个也写得乱七八糟的!呵呵 误导误导!
#6
zbs2007-05-01 16:53

楼上的没误导我啊,大家 多多讨论,多多学习啊

我的本意是想计算出数据库中 表的记录数有总共多少条,但是让我很郁闷的是他总是等于0 ,select count(*) from products好像是求总录数吧


ResultSet rs2 =stmt.executeQuery("select count(*) from products");
while (rs2.next()){

System.out.println("number="+rs2.getInt(1));//这个地方他等于0,,


}
#7
lgdcky2007-05-01 22:05
不知道了!我自己建了个数据库用了那几种方法都能得到正确的结果!程序运行时有没有异常?
#8
lgdcky2007-05-01 22:22
我把我的代码贴出来你比较一下吧!
import java.sql.*;

public class MySQLTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:MySQL://localhost:3306/mydatabase";
String user = "root";
String password = "";
Connection con;

try
{
Class.forName(driver);
con = DriverManager.getConnection(url,user,password);
String insert = "insert friends(id,name) values(?,?)";
PreparedStatement ps = con.prepareStatement(insert);
String names = "Rachel";
ps.setInt(1, 1);
ps.setString(2, names);
ps.execute();
String query = "select count(*) from friends";
ResultSet rs = ps.executeQuery(query);
while(rs.next())
{
System.out.println(rs.getInt(1));
}
}
catch(Exception e)
{
e.printStackTrace();
}
数据库就2个字段 一个Id 一个name!
#9
zbs2007-05-01 23:41

我今天 搞了一天
在本工程里面 我怎么改都是 一个 为0
后来 我建立一个 工程,做实验,发现 结果都是对的


于是我,,我把刚开始错的工程中的这个str=dbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookShop
这个重写了一次,发现结果都是对的
我比较刚才的str发现 两个str是一模一样 的,但是在我机子结果不一样,


就是下面这两个: 有兴趣你们可以试试(有时侯上网考下面的东西用不了),
我不知道是不是机子问题?

jdbc:microsoft:sqlserver://localhost:1433;DababaseName=BookShop
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookShop(正常)

#10
lgdcky2007-05-02 20:12
晕 LZ这个可能是不是和RP有关啊!呵呵
#11
风月_无边2007-05-02 20:13
确实是一样,为什么有这种问题!!
#12
smoon2007-05-03 23:35
先清理下项目在生成以下有时候就会好点真的
我有几次也是这样的
1