Java:MySQL查询和返回

Java:MySQL查询和返回,java,mysql,inject,Java,Mysql,Inject,我试图访问我的数据库,注入一些SQL代码并从中返回值 首先,我是这方面的新手,但我想出了以下代码: public static ResultSet checkCmdAmount() throws Exception { try { // This will load the MySQL driver, each DB has its own driver Class.forName("com.mysql.jdbc.Driver");

我试图访问我的数据库,注入一些SQL代码并从中返回值

首先,我是这方面的新手,但我想出了以下代码:

  public static ResultSet checkCmdAmount() throws Exception {
        try {
          // This will load the MySQL driver, each DB has its own driver
          Class.forName("com.mysql.jdbc.Driver");
          // Setup the connection with the DB
          connect = DriverManager.getConnection(""+MyBot.mysqlDbPath+"",""+MyBot.mysqlDbUsername+"",""+MyBot.mysqlDbPassword+"");
          PreparedStatement zpst=null;
          ResultSet zrs=null;
          zpst=connect.prepareStatement("SELECT COUNT(1) FROM eigenebenutzerbefehle");
          zrs=zpst.executeQuery();
             return zrs;
        }catch (Exception e) {
              throw e;
            } finally {
              close();
            }
      }
作为回报,我得到以下信息:

ResultSet: com.mysql.jdbc.JDBC4ResultSet@196da649
但实际上我需要表中的行数。 当我通过phpmyadmin执行sql代码时,我得到3,这是正确的


这里出了什么问题?

您需要从结果集中读取并获得所需的值。按以下步骤操作:

public static int checkCmdAmount() throws Exception {
  // ...

  int count = 0;
  while (zrs.next()) {
    // Get the values from the current row...
    count = zrs.getInt(1);
  }
  return count;
}

ResultSet
对象包含通过使用数据库中的
preparedstation
语句执行
SQL
查询而返回的所有行

所以当您执行时

ResultSet zrs=null;
zpst=connect.prepareStatement("SELECT COUNT(1) FROM eigenebenutzerbefehle");
zrs=zpst.executeQuery();
return zrs;
正如您所说,您的
SQL
查询将返回行数,并且该信息存储在
ResultSet
对象
zrs
,但是
ResultSet
对象的任务是存储包含所有指定列的值的所有行,或者在使用
*
的情况下存储所有行的值 当您返回zrs时,您返回的是一个ResultSet对象,当您尝试打印一个对象时,您得到的是对象的
toString()
转换的默认值,在大多数情况下,这是对象类型完全限定名+几个额外字符

并执行更新后的代码

if(zrs.next()){
    return zrs.getInt(1);
}
else{
    return -1;
}
这里
zrs.next()
调用将
zrs
移动到有效的下一个记录(或行),从中可以检索值,它还根据记录的存在返回true或false。在您的示例中,如果您再添加一个对
zrs.next()
的调用,那么它将返回false。
zrs.getInt(1)
将返回
zrs
指向的行中的值以及该行中第一列的值,这是您的唯一列。

在本例中
String count=zrs.getString(1)哦,那已经晚了几秒钟了,我将返回类型更改为int,并添加了if(zrs.next()){return zrs.getInt(1);},现在也可以使用,但谢谢!:D新的输出是什么?它是3,只是它应该是=D你不应该在你的问题中包含答案。您的问题有答案,如果您觉得某个答案解决了您的问题,请接受该答案,而不是将其包含在您的问题中:)