【问题标题】:can not insert datum using preparestatement无法使用 preparestatement 插入数据
【发布时间】:2014-10-29 06:50:45
【问题描述】:

我正在尝试使用 prepareStatement 将数据插入 mysql 数据库,但它显示错误,例如

类型不匹配:无法从 java.sql.PreparedStatement 转换为 com.mysql.jdbc.PreparedStatement

下面是我的代码:

<%@ page import="java.sql.*" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>


           <%

               try
                   {
                      Class.forName("com.mysql.jdbc.Driver");
   Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
                      // Statement st=connection.createStatement();
                      PreparedStatement st=null;
                      String Eid = request.getParameter("Eid");
                      String Rpswd=request.getParameter("Rpswd");
                      String uType=request.getParameter("uType");

                     // String query="insert into login_table(`uid`,`pswd`,`user_type`)  values('"+Eid+"','"+Rpswd+"','"+uType+"')";
    String query="insert into login_table(`uid`,`pswd`,`user_type`)  values(?,?,?)";
                       st = con.prepareStatement(query);
                       st.setString(1,Eid);
                       st.setString(2,Rpswd);
                       st.setString(3,uType);


                           // int i= st.executeUpdate(query);

                         int i= st.executeUpdate();


                      }
                 catch(Exception e)
                              {
                                 e.printStackTrace();
                               }

                   %>

</body>
</html>

st = con.prepareStatement(query); 上出现错误。

帮帮我。我哪里错了?

注意:这是我第一次使用来自CreateStatementpreparedstatement,所以建议我哪个对代码有用?。

【问题讨论】:

  • 你确定这个&lt;%@ page import="java.sql.*" %&gt;是唯一的导入语句

标签: java mysql prepared-statement


【解决方案1】:

修复你的导入并替换

import com.mysql.jdbc.PreparedStatement;

通过

import java.sql.PreparedStatement;

你不应该在你的代码中使用特定于 mysql 的类。您只需要标准的 JDBC 类。

关于使用aofprepared stataments,是的,每次需要向查询传递参数时都应该使用它。这是一个健壮性和安全性的问题(阅读 SQL 注入攻击)。

但是 JDBC 代码和一般的 scriptlet 与 JSP 无关。 JSP 是视图组件,其工作是生成 HTML。它们不是数据访问组件。这些应该用 Java 编写并从控制器 servlet 访问。

【讨论】:

  • 不!它不工作。它显示错误,如“导入 java.sql.PreparedStatement 与另一个导入语句冲突”
  • 那是因为你导入了 java.sql.*。然后删除不需要的 com.mysql.jdbc.PreparedStatement 的导入。
  • 现在我只导入了 但同样的错误!
  • 那么错误不是来自这个 JSP,或者这个 JSP 包含你没有向我们展示的代码。
  • 抱歉!我忘记删除 。现在可以正常工作了,谢谢老兄。
【解决方案2】:

只需删除

import com.mysql.jdbc.PreparedStatement;

并替换为

import java.sql.PreparedStatement;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多