关于if(rs.next()){}else{},每次运行直接显示else分支的语句,求帮忙

<%

   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //加载驱动、
   String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=liuben";
   String user="sa";
   String password="961213";
   Connection conn= DriverManager.getConnection(url,user,password);

   PreparedStatement stmt1=conn.prepareStatement("select * from t_user where username=?");
   PreparedStatement stmt=conn.prepareStatement("insert into t_user values(?,?)");
   String c=request.getParameter("name");
   String a=request.getParameter("name");
   String b=request.getParameter("psword");
   stmt.setString(1,a);
   stmt.setString(2,b);
   stmt1.setString(1,c);

   ResultSet rs=stmt1.executeQuery();
     if(rs.next()){
             out.print("用户名已存在,请使用其他的用户名");
                     }else{
                        int i=stmt.executeUpdate();
                        out.print("注册成功");
                                 }
         }

         conn.close();      

%>

if(rs.next()) 为false ? 是不是没有查询出结果啊。你的rs为空啊。

打印一下rs的长度,很有可能没有查到东西

一直是else里的内容,那么很明显是你的 rs.next() 并没有成功,从 rs 开始往上测试你的代码。跟楼上说的一样

首先插入的sql语句都是错的,当然这个不影响你的那个问题。但是按照你写的,见名知意,你用密码的值对应了用户名,显然有问题吧。建议代码规范,你的代码特别乱。

insert 没执行, statement 设好参数后,还需要executeupdte 来执行, 所以查询的结果rs 没有任何数据

rs.next()是false,首先你看看你sql语句。执行一下对吗? insert插入数据了吗
做这个画个图理清思路再说,你这个代码太乱了..会把你自己都绕进去的

select * from t_user where username='?'