我正在尝试使用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);
上收到错误。
帮帮我。我哪里错了?
注意:这是我第一次使用preparedstatement
中的CreateStatement
,所以建议我哪一个代码有用?
答案 0 :(得分:4)
修复导入并替换
import com.mysql.jdbc.PreparedStatement;
通过
import java.sql.PreparedStatement;
您不应该在代码中使用特定于mysql的类。您只需要标准的JDBC类。
关于使用aof准备好的stataments,是的,每次需要将参数传递给查询时都应该使用它。这是一个健壮性和安全性问题(阅读SQL注入攻击)。
但是,JDBC代码和一般的scriptlet在JSP中没有任何关系。 JSP是视图组件,其作用是生成HTML。他们不是数据访问组件。这些应该用Java编写,并从控制器servlet访问。
答案 1 :(得分:2)
只需删除
import com.mysql.jdbc.PreparedStatement;
并替换为
import java.sql.PreparedStatement;