Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数索引超出范围_Java_Mysql_Jdbc - Fatal编程技术网

Java 参数索引超出范围

Java 参数索引超出范围,java,mysql,jdbc,Java,Mysql,Jdbc,我试图创建一个登录表单,结果显示列索引超出范围。我已经创建了两列,并且使用了两列,但是它显示了错误 String url = "jdbc:mysql://localhost:3306/login_form?useSSL=false"; String name = "Vzlys"; String Pass = "Vzlys@1995"; try { Class.forName("com.mysql.jdbc.Driver"); con = Drive

我试图创建一个登录表单,结果显示列索引超出范围。我已经创建了两列,并且使用了两列,但是它显示了错误

String url = "jdbc:mysql://localhost:3306/login_form?useSSL=false";
String name = "Vzlys";
String Pass = "Vzlys@1995";
   try 
    {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(url,name,Pass);
        st = con.prepareStatement("select * from login where username = ? and password = ?");//here login is my table name
        st.setString(1,txtusername.getText());
        st.setString(2,txtpassword.getText());//error occurs here
        rs = st.executeQuery();
        JOptionPane.showMessageDialog(null,"Welcome");
        ferrysql f = new ferrysql();
        f.setVisible(true);
        con.close();
        st.close();
    } 
    catch (Exception e) 
    {
       JOptionPane.showMessageDialog(null,e);
    }
在代码中:

 st = con.prepareStatement("query");
表示您的查询是:query

但是如果你使用

 String query= "select * from table A where column1 = ?";
 st = con.prepareStatement(query);
注意:在此状态中,查询不在倒逗号内

希望这会有所帮助

  • st=con.preparest陈述(“查询”)
    上行显示您的查询是“query”,而不是您可能在程序中使用的变量

  • 这可能是由于您的
    txtpassword。getText()
    在第行为空
    st.setString(2,txtpassword.getText())

    在使用at preparedStatement之前,请同时打印txtSerName和txtpassword以检查这两个字段是否包含数据

  • 如果您正在检查用户名和密码,则必须使用以下查询

    PreparedStatement st = con.prepareStatement("select * from user where 
    (userName = ? and password = ?");
             st.setString(1,txtusername.getText());
            st.setString(2,txtpassword.getText());
    

    这应该行得通

    伙计们,我尝试了这个查询,但它仍然不起作用。有人能帮我吗?请发布一个完整的异常堆栈跟踪。我尝试了相同的查询,但它不起作用。有人能帮我吗???
    catch(异常e){e.printStackTrace();JOptionPane.showMessageDialog(null,e);}
    Use e.printStackTrace();要得到准确的误差