有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将表连接到jtextbox

我试图连接jtextbox中的每个表字段,但当我运行此代码时,它会显示语法错误。我正在使用sqlite和netbeans,希望您能帮助我

 try{

        String sql="Select * From account where id=txtId.getText() AND fname=txtFname.getText() AND lname=txtLname.getText() AND username=txtUsername.getText() AND password=txtPassword.getText()";

        pst=conn.prepareStatement(sql);
        pst.setString(1, txtId.getText());
        pst.setString(2, txtFname.getText());
        pst.setString(3, txtLname.getText());
        pst.setString(4, txtUsername.getText());
        pst.setString(5, txtPassword.getText());

        pst.execute();
        rs.close();
        pst.close();

    }
    catch(SQLException e){
        JOptionPane.showMessageDialog(null,e);
    }
    finally{
        try{
            rs.close();
            pst.close();

        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,e);
        }

}                                        

共 (2) 个答案

  1. # 1 楼答案

    尝试放置占位符(?)在你的询问中

    String sql="Select * From account where id=? AND fname=? AND lname=? AND username=? AND password=?";
    

    您正在提供值,但查询中没有占位符:
    pst.setString(1, txtId.getText());

    Edit1:回复您的评论

    try{
        String sql="Select * From account where id=? AND fname=? AND lname=? AND username=? AND password=?";
        pst=conn.prepareStatement(sql);
        pst.setString(1, txtId.getText());
        pst.setString(2, txtFname.getText());
        pst.setString(3, txtLname.getText());
        pst.setString(4, txtUsername.getText());
        pst.setString(5, txtPassword.getText());
    
        rs=pst.execute(); //to get resultset
        while(rs.next())
        {
          //Do what you want to do if the records are found
          System.out.println(rs.getString(1));
          System.out.println(rs.getString(2));
        }
    }
    catch(SQLException e){
        JOptionPane.showMessageDialog(null,e);
    }
    finally{
        try{
            if(rs!=null)rs.close();
            if(pst!=null)pst.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,e);
        }
    }         
    
  2. # 2 楼答案

    您正在字符串文本中进行方法调用。最简单的方法是将方法调用移出字符串,并在变量中获取返回值。然后,可以将它们附加到查询字符串中

    正确的方法是使用PreparedStatement。它是为这种情况而设计的。教程:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

    更新:
    由于您使用的是PreparedStatement,请将查询中的任何未知值替换为。然后,您可以稍后使用适当的setter设置它们