如何用Java编写prepareStatement

如何用Java编写prepareStatement,java,servlets,jdbc,Java,Servlets,Jdbc,我想使用getParameter进入Strings和ints,并使用prepareStatement和SQL将它们放入数据库。它给出了setString和setInt的错误 try { String id = request.getParameter("clientid"); String cname = request.getParameter("clientname"); String address = request.getParameter("address")

我想使用
getParameter
进入
String
s和
int
s,并使用
prepareStatement
和SQL将它们放入数据库。它给出了
setString
setInt
的错误

try {
    String id = request.getParameter("clientid");
    String cname = request.getParameter("clientname");
    String address = request.getParameter("address");
    String phonemodel= request.getParameter("phonemodel");
    String imei = request.getParameter("imei");
    String problem = request.getParameter("problem");
    String date2 = request.getParameter("date");
    String comments1= request.getParameter("comments");

    int  clientid = Integer.parseInt(id);
    int imeino  = Integer.parseInt(imei);
    // int date1 = Integer.parseInt(date2);

    Statement pstmt;

    Class.forName("org.apache.derby.jdbc.ClientDriver"); 
    Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/sample", "app" , "app");

    pstmt=con.prepareStatement("Insert into movilapp(id,clientname,address,modle,imei,problem,date,comments) values(?,?,?,?,?,?,?,?)");
    pstmt.setInt(1,clientid);
    pstmt.setString(2,cname );
    pstmt.setString(3,address);
    pstmt.setString(4,phonemodel);
    pstmt.setInt(5,imeino);
    pstmt.setString(6,problem);
    pstmt.setString(7, comments1);
    pstmt.executeUpdate();
}
catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}

您调用了
con.prepareStatement
来获取一个
PreparedStatement
,但随后您将其分配给了类型为
Statement
的变量,因此Java不知道有一个
PreparedStatement
特定的方法
setString

通过将pstmt的声明类型从更改为,将其分配给实际的
PreparedStatement
变量

Statement pstmt;

*如果使用
语句
,则其语法为*

对于
PreparedStatement

PreparedStatement pstmt = null;
String SQL = "Update Employees SET age = ? WHERE id = ?";
pstmt = conn.prepareStatement(SQL);
psmt.setInt(1,30);
psmt.setInt(2,1003);
psmt.executeUpdate(SQL);
所以改变
语句pstmt
PreparedStatement pstmt=null和它将工作

 Statement stmt = null;
 stmt = conn.createStatement( );
 String sql = "UPDATE Employees set age=30 WHERE id=103";
 stmt.executeUpdate(sql);
PreparedStatement pstmt = null;
String SQL = "Update Employees SET age = ? WHERE id = ?";
pstmt = conn.prepareStatement(SQL);
psmt.setInt(1,30);
psmt.setInt(2,1003);
psmt.executeUpdate(SQL);