将表连接到jtextbox

时间:2013-11-28 13:48:13

标签: java sqlite netbeans view

我正在尝试连接我的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 个答案:

答案 0 :(得分:1)

尝试在您的查询中添加占位符(?)..

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

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

编辑1:回复您的评论

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);
    }
}         

答案 1 :(得分:0)

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

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

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