【发布时间】:2015-12-02 22:38:01
【问题描述】:
我必须将我的网页链接到一个 jsp 文件,但我遇到了一些错误。顺便说一句,我有点中级。我有一个 MySQL 数据库,我打算链接我在网页上填写的表单,但我要么收到此错误(PreparedStatement 类型中的方法 setInt(int, int) 不适用于参数 (int, String) ) 或 (无法连接到数据库) 有人可以帮忙吗?
jsp代码:
<%@ page import="java.sql.*"%>
<html>
<head>
<title>AutoServe</title>
</head>
<body>
<h1>form</h1>
<%
String first_name = request.getParameter("fname");
String last_name = request.getParameter("lname");
String email_form = request.getParameter("email");
String phone_form = request.getParameter("phone");
String address_form = request.getParameter("address");
String year_form = request.getParameter("car_year");
String make_form = request.getParameter("make");
String model_form = request.getParameter("model");
String colour_form = request.getParameter("colour");
int car_year = Integer.parseInt(year_form);
try {
java.sql.Connection cn;
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/webpage", "root", "passwordlivi");
PreparedStatement pstatement = null;
int updateQuery = 0;
String queryString = "INSERT INTO appointment(fname, lname, email, phone, address, car_year, make, model, colour) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
pstatement = cn.prepareStatement(queryString);
pstatement.setString(1, first_name);
pstatement.setString(2, last_name);
pstatement.setString(3, email_form);
pstatement.setString(4, phone_form);
pstatement.setString(5, address_form);
pstatement.setInt(6, year_form);
pstatement.setString(7, make_form);
pstatement.setString(8, model_form);
pstatement.setString(9, colour_form);
updateQuery = pstatement.executeUpdate();
if (updateQuery != 0) { %>
<br>
<TABLE style="background-color: #E3E4FA;"
WIDTH="30%" border="1">
<tr><th>Data is inserted successfully
in database.</th></tr>
</table>
<%
}
}
catch (Exception ex) {
out.println("Unable to connect to database.");
}
%>
</body>
</html>
我的数据库代码
<%@ page import="java.sql.*"%>
<html>
<head>
<title>JDBC Connection example</title>
</head>
<body>
<h1>AutoServe.Inc</h1>
<%
java.sql.Connection cn;
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/webpage", "root", "passwordlivi");
ResultSet rst=null;
Statement stmt=null;
stmt=cn.createStatement();
rst=stmt.executeQuery("select * from appointment ");
while(rst.next()){
%>
<p>
First Name: <%=rst.getString(1)%> <br/>
Last Name: <%=rst.getString(2)%> <br/>
Email Address: <%=rst.getString(3)%> <br/>
Phone: <%=rst.getString(4)%> <br/>
Address: <%=rst.getString(5)%> <br/>
Year: <%=rst.getInt(6)%> <br/>
Make : <%=rst.getString(7)%> <br/>
Model: <%=rst.getString(8)%> <br/>
Colour: <%=rst.getString(9) %> </br>
</p>
<%
}
%>
</body>
</html>
【问题讨论】:
-
你需要学会阅读错误信息。这一点非常清楚。该方法需要两个 int,而您正在为其提供一个 int 和一个 String。你不能每次都因为这样的问题跑到 SO 上,否则你将永远无法到达任何地方。