2012-04-14 63 views
1

我在我的Java应用程序中遇到问题。这是一个简单的查询,可以根据用户的姓名获得用户分数,但是,我经常发现错误,无法找到问题的来源。Java SQL:结果集之前的错误

  String driver = "com.mysql.jdbc.Driver";  
     Class.forName(driver).newInstance(); 

     con = DriverManager.getConnection(url, USERNAME, PASSWORD); 
     st = con.createStatement(); 


     PreparedStatement preStatement = con.prepareStatement("select score from playerscore where name=?"); 
     preStatement.setString(1, "tomcat"); 

     ResultSet resultSet = preStatement.executeQuery(); 
     score    = resultSet.getInt(1); 

难道有人会投下我的眼睛并指向正确的方向吗?

编辑:堆栈跟踪的图像

http://imageshack.us/photo/my-images/854/stackr.jpg/

+0

你可以发布堆栈跟踪吗?这将有所帮助。 – 2012-04-14 14:32:02

+0

添加链接到stacktrace的图像 – MindDrip 2012-04-14 14:40:59

+0

附注:不要在写入.newInstance()的位置写入它。 Class.forName(...)就足够了,这只会创建一个不必要的驱动程序实例。 – 2012-04-14 14:41:05

回答

4

最初,ResultSet被第一行之前定位。因此,您必须先调用resultSet.next()才能移至第一行,然后才能检索其任何值。

您可以通过检查返回的booleanresultSet.next()来验证第一行是否确实存在。

+0

解决方案!谢谢。 – MindDrip 2012-04-14 14:43:58