データベース 'Prison' から読み取る以前の JSP ファイルはうまく機能していました。しかし、データベースに値を挿入するはずの「add.jsp」ファイルには、次の例外が表示されます。
"SQLException: Number of query values and destination fields are not the same"
My MS Access2007, converted to **Access2003** Prison db with table 'Nominal' has 14 fields:
PNo(int), PName(str), Age(int), Address(str), Height(int), Weight(int), Health(str), Possessions(str), Occupation(str), Case(str), Sentence(str), From(str), To(str) and Parole(str).
これまで db で使用されていた SQL クエリは選択型でした。ただし、テーブルを変更するクエリでは例外が発生します。他のフォーラムで指定されているように、引用符とカンマ、名前はすべて徹底的にチェックされていますが、すべて問題ありません。実際には「レコードが追加されました」と表示されましたが、表示されませんでした。代わりに、同じエラー メッセージがtomcat7.exe コマンドプロンプトに表示されます。私はjdk1.6.0_21を使用しています。これが私のコードのコピーです。誰かの友人が助けてくれることを願っています:
<%@ page language="java" import="java.sql.*" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String driver="sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
Connection con=null;
Statement stmt=null;
try
{
String url="jdbc:odbc:Prison";
con=DriverManager.getConnection(url);
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
if(request.getParameter("action")!=null)
{
try
{
int PNo=Integer.parseInt(request.getParameter("PNo"));
String PName=request.getParameter("PName");
int Age=Integer.parseInt(request.getParameter("Age"));
String Address=request.getParameter("Address");
int Height=Integer.parseInt(request.getParameter("Height"));
int Weight=Integer.parseInt(request.getParameter("Weight"));
String Health=request.getParameter("Health");
String Possessions=request.getParameter("Possessions");
String Occupation=request.getParameter("Occupation");
String Case=request.getParameter("Case");
String Sentence=request.getParameter("Sentence");
String From=request.getParameter("From");
String To=request.getParameter("To");
String Parole=request.getParameter("Parole");
System.out.println(PNo);
String s="insert into Nominal values('" +PNo+ "','"+Possessions+ "','" +Occupation+ "','" +Case+ "','" +Sentence+ "','" +From+ "','" +To+ "','" +Parole+ "')";
stmt.executeUpdate(s);
}
catch(SQLException e)
{
System.out.println(e.getMessage());
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Success!</title>
</head>
<body>
<h1>Record Added</h1>
<a href="addp.html">Back</a>
</body>
</html>
<%
stmt.close();
con.close();
}
%>
助けてください。