Java:MySQL查询和返回
我试图访问我的数据库,注入一些SQL代码并从中返回值 首先,我是这方面的新手,但我想出了以下代码: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");
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你不应该在你的问题中包含答案。您的问题有答案,如果您觉得某个答案解决了您的问题,请接受该答案,而不是将其包含在您的问题中:)