如何解决通过将Java变量与sql WHERE标记结合使用,从结果集中获取主键值
我知道使用这样的技术根本不是一个好习惯,因为它很容易进行sql注入,但是为了提高速度和进行测试,这是我目前的做法。我正在创建一个程序,它将用户名,ip和数据库名称保存到另一个数据库。但是,当我尝试执行如下语句时:
ResultSet rs = stmt.executeQuery("SELECT LoginID,IPAddress FROM slavelogins WHERE IPAddress = '" + inputString + "';");
String ClientID = String.valueOf(rs.getInt(1));
System.out.println("Client ID: " + ClientID);
} catch (SQLException err) {
System.err.println("Error retrieivng client id,please continue later!" + err);
System.exit(0);
然后我遇到一个错误,提示该值在结果集开始之前,我认为这意味着没有从数据库中检索到的数据,是否有解决此问题的方法或解决此问题的方法,或者是一种更简单的方法?我没意识到吗?
如果出现任何问题,PS登录ID是主键。
上面的代码检索登录ID,并以'ClientID:'+ rs.getInt(1)的形式显示给用户,其中rs.getInt应该是登录ID。
我还看到了有关在Preparedstatement中使用占位符的帖子,但是我在普通语句中没有看到有关选择查询的任何内容。
错误消息: 检索客户端ID时出错,请稍后再继续! java.sql.SQLException:结果集开始之前
解决方法
您可以将ResultSet
视为您查询的行上的光标。无论它处于什么位置,都可以使用next()
来检查那里是否还有另一行,并将光标移到该行。
结果的第一行没什么不同-ResultSet
在第一行之前开始 ,您需要使用next()
移至该行:>
if (rs.next()) {
String clientID = String.valueOf(rs.getInt(1));
System.out.println("Client ID: " + clientID);
} else {
System.out.println("No such client");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。