当前位置: 代码迷 >> Java Web开发 >> 小弟我都哭了,帮帮小弟我吧resultSet = statement.executeQuery(test);有关问题
  详细解决方案

小弟我都哭了,帮帮小弟我吧resultSet = statement.executeQuery(test);有关问题

热度:614   发布时间:2016-04-17 10:46:12.0
我都哭了,帮帮我吧resultSet = statement.executeQuery(test);问题
try {
Class.forName("org.gjt.mm.mysql.Driver");

connection = DriverManager.getConnection(url, username, password);
}
// 捕获加载驱动程序异常
catch (ClassNotFoundException cnfex) {
System.err.println("装载 JDBC/ODBC 驱动程序失败。");
cnfex.printStackTrace();
System.exit(1); // terminate program
}
// 捕获连接数据库异常
catch (SQLException sqlex) {
System.err.println("无法连接数据库");
sqlex.printStackTrace();
System.exit(1); // terminate program
}
// 如果数据库连接成功,则建立GUI
// SQL语句
String test = "SELECT * FROM boss WHERE name='" + name
+ "' and passwd='" + passwd + "' ";
try {

statement = connection.createStatement();
resultSet = statement.executeQuery(test);

} catch (SQLException sqlex) {
sqlex.printStackTrace();
}
if (resultSet.next()) {


return "NO";
} else {
return "YES";
}
}

数据库中有数据,但一直返回YES, resultSet.next()返回flase,怎么回事呢??谢了。。。

------解决方案--------------------
String test = "SELECT * FROM boss WHERE name='" + name
+ "' and passwd='" + passwd + "' ";
这条SQL语句有问题吧,你到你想取什么?如果想判断用户名和密码,可以这样:
select name from boss where name='"+name+"' and passwd='"+passwd+"'";

------解决方案--------------------
String test = "SELECT * FROM boss WHERE name='" + name
+ "' and passwd='" + passwd + "' ";
name和passwd你定义的是什么,是否是空字符串或者是其他类型,看你所定义的name和passwd是否和数据库中你所要过滤的数据一致,以上都没问题,你就先不要过滤,用测试代码输出数据库中name和passwd的数据,一步步往下走
------解决方案--------------------
String test = "SELECT * FROM boss WHERE name='" + name
+ "' and passwd='" + passwd + "' ";
name和passwd你定义的是什么,是否是空字符串或者是其他类型,看你所定义的name和passwd是否和数据库中你所要过滤的数据一致,以上都没问题,你就先不要过滤,用测试代码输出数据库中name和passwd的数据,一步步往下走
------解决方案--------------------
先吐槽下楼主这个编码习惯问题:
1、Connection 没有close;
2、拼装SQL语句存在注入漏洞;
3、看着样子,password没有做MD5之类的加密,学CSDN玩密码泄漏么?


关于问题排查的话,建议:
String test = "SELECT * FROM boss WHERE name='xxoo' and passwd='ooxx'";
先写死测试看看。
------解决方案--------------------
探讨

先吐槽下楼主这个编码习惯问题:
1、Connection 没有close;
2、拼装SQL语句存在注入漏洞;
3、看着样子,password没有做MD5之类的加密,学CSDN玩密码泄漏么?


关于问题排查的话,建议:
String test = "SELECT * FROM boss WHERE name='xxoo' and passwd='ooxx'";
先写死测试看看。
……
  相关解决方案