【问题标题】:How to write prepareStatement in Java如何用Java编写prepareStatement
【发布时间】:2013-07-25 22:59:55
【问题描述】:

我想使用getParameter 进入Strings 和ints 并使用prepareStatement 和SQL 将它们放入数据库中。它给了我setStringsetInt 的错误。

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

【问题讨论】:

    标签: java servlets jdbc


    【解决方案1】:

    您调用con.prepareStatement 以获取PreparedStatement,但随后将其分配给Statement 类型的变量,因此Java 不知道存在PreparedStatement 特定方法setString

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

    Statement pstmt;
    

    PreparedStatement pstmt;
    

    【讨论】:

      【解决方案2】:

      *如果使用Statement那么它的语法是*

       Statement stmt = null;
       stmt = conn.createStatement( );
       String sql = "UPDATE Employees set age=30 WHERE id=103";
       stmt.executeUpdate(sql);
      

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

      所以把Statement pstmt;改成PreparedStatement pstmt = null;就行了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 2011-01-17
        • 2011-04-12
        • 1970-01-01
        • 2020-03-29
        • 2013-04-03
        • 1970-01-01
        • 2010-09-11
        相关资源
        最近更新 更多