【问题标题】:My program is not going inside the "if" part and it is always going in the "else" part我的程序没有进入“if”部分,它总是进入“else”部分
【发布时间】:2016-06-15 07:26:07
【问题描述】:

我已经通过以下代码完成了与Oracle 10g Xe数据库的连接。

Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:OracleDS");
Connection con=ds.getConnection(); 

String mob=request.getParameter("mob_no");
String pass=request.getParameter("pass");
Statement stmt=con.createStatement();

//checking login details
String sql="select * from user1 where mob_no='"+mob+"' and password='"+pass+"'";
ResultSet rs=stmt.executeQuery(sql);
String sql2="select * from postpaid where mob_no='"+mob+"'";
ResultSet rs2=stmt.executeQuery(sql2);

if(rs.isBeforeFirst())
{
    while(rs2.next())
    {  
        if(rs2.getInt(2)!=0)
        {
            out.println("You have total due of "+rs2.getInt(2));
            out.println("<a href=\"paybill.jsp\">Pay Bill</a>");
        }
        else {
            out.println("You have no dues!!!!!");
        }
    }
}
else
{
  out.println("Invalid login details.....<a href=\"#\">Back to home page</a>");
}

我的程序总是显示结果“无效登录详细信息”

【问题讨论】:

  • 我总是得到输出“无效的登录详细信息”。
  • 你应该修正括号的格式
  • 确保您的第一个查询返回了一些结果。
  • 抱歉括号的格式..我只是粘贴代码并没有检查我的位置
  • 抱歉之前的代码磨损了。我复制粘贴了错误的代码。这个新代码是我遇到问题的代码。

标签: java if-statement jdbc resultset


【解决方案1】:

isBeforeFirst() 的文档说:

“如果游标在第一行之前,则返回true;如果游标在任何其他位置或结果集不包含行,则返回false。”

在这种情况下,false 很可能是指后者;即您的结果集为空,因为没有行与第一个查询中提供的用户和密码匹配。

更新

我的回答基本一样。最后一个else 分支被采用,因为第一个查询不匹配任何行。

为什么?

我可以猜到……但是,我建议您打印出您正在执行的查询 SQL,以确保这些语句是它们应该是的。

另外需要注意的是构建这样的查询:

  String sql="select * from user1 where mob_no='"+mob+"' and password='"+pass+"'";

危险的。假设有人发送了一个带有 mob_no 参数的请求,其值如下所示:

  "foo' ; drop table user1 ;"

您应该使用PreparedStatement 和这样的 SQL:

  String sql = "select * from user1 where mob_no = ? and password = ?";

并使用PreparedStatement.setString(...) 添加参数值。

【讨论】:

  • 我在代码中做了一些更正......实际上我是stackoverflow的新手,这就是为什么我错误地发布了错误的问题......我不知道这个网站的进出/跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2011-11-27
相关资源
最近更新 更多