我做了个JDBC 连接数据库的程序 在表单页面里增加一个数据 用Tomcat调试 结果显示 : name cannot be resolved price cannot be resolved
bookCont cannot be resolved authr cannot be resolved
实在不知道是哪里出了问题,希望大家能看一下是不是这里有问题: pstmt = conn.prepareStatement("insert into book (name,price,bookcont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);创建名称为book类,用于封装图书对象信息 代码如下:package liyaya.book;public class liyaya {
private int id;
private String name;
private double price; private String authr;
private int bookCont;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getbookCont() {
return getbookCont();
}
public void setbookCont(int bookCont) {
this.bookCont = bookCont;
}
public String getauthr() {
return authr;
}
public void setauthr(String authr) {
this.authr = authr;
}
}
创建index.jsp 页面,它是程序中的主页,用于放置添加图书信息所需要的表单,此表单提交到 addBook.jsp 页面进行处理, index.jsp 如下:<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB18030"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>添加图书信息</title>
</head>
<body>
<form action="addBook.jsp" method="post">
<table border="1">
<tr>
<td align="center" colspan="2" >
<h2> 添加图书信息</h2>
</td>
</tr>
<tr>
<td align="centen" >图书名称 </td>
<td> <input type="text" name="name"/></td>
</tr>
<tr>
<td align="center" >价格</td>
<td><input type="text" name="price"</td>
</tr>
<tr>
<td align="center"> 数量</td>
<td><input type="text" name="bookCount"/></td>
</tr>
<tr>
<td align="center">作者</td>
<td><input type="text" name="author"/> </td>
</tr>
<tr>
<td><input type="submit" value="添加信息"/></td>
</tr>
</table>
</form>
</body>
</html>
创建 addBook.jsp 页面,用于对添加图书信息请求进行处理,此页面通过JDBC将提交的图书信息数据写入数据库中,其代码如下:<%@ page language="java" import="java.util.*,java.sql.*,liyaya.book.*" pageEncoding="GB18030"%><%
PreparedStatement pstmt = null;
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
pstmt = conn.prepareStatement("insert into book (name,price,bookcont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);
int ret = pstmt.executeUpdate();
if(ret > 0){
out.print("cheng gong");
}
pstmt.close();
conn.close();
} catch (Exception e) {
out.print("shibai");
e.printStackTrace();
}
%>
数据库 book.sql 文件如下 :create table book
(
id int primary key auto_increment,
name varchar(255),
price int,
bookCont int,
authr varchar(255)
);insert into book values (null,'Java开发典型模块大全',79,50,'明日科技');
insert into book values (null,'Java程序设计自学手册',49,50,'明日科技');
insert into book values (null,'Jsp技术开发大全',49,50,'明日科技');
bookCont cannot be resolved authr cannot be resolved
实在不知道是哪里出了问题,希望大家能看一下是不是这里有问题: pstmt = conn.prepareStatement("insert into book (name,price,bookcont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);创建名称为book类,用于封装图书对象信息 代码如下:package liyaya.book;public class liyaya {
private int id;
private String name;
private double price; private String authr;
private int bookCont;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getbookCont() {
return getbookCont();
}
public void setbookCont(int bookCont) {
this.bookCont = bookCont;
}
public String getauthr() {
return authr;
}
public void setauthr(String authr) {
this.authr = authr;
}
}
创建index.jsp 页面,它是程序中的主页,用于放置添加图书信息所需要的表单,此表单提交到 addBook.jsp 页面进行处理, index.jsp 如下:<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB18030"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>添加图书信息</title>
</head>
<body>
<form action="addBook.jsp" method="post">
<table border="1">
<tr>
<td align="center" colspan="2" >
<h2> 添加图书信息</h2>
</td>
</tr>
<tr>
<td align="centen" >图书名称 </td>
<td> <input type="text" name="name"/></td>
</tr>
<tr>
<td align="center" >价格</td>
<td><input type="text" name="price"</td>
</tr>
<tr>
<td align="center"> 数量</td>
<td><input type="text" name="bookCount"/></td>
</tr>
<tr>
<td align="center">作者</td>
<td><input type="text" name="author"/> </td>
</tr>
<tr>
<td><input type="submit" value="添加信息"/></td>
</tr>
</table>
</form>
</body>
</html>
创建 addBook.jsp 页面,用于对添加图书信息请求进行处理,此页面通过JDBC将提交的图书信息数据写入数据库中,其代码如下:<%@ page language="java" import="java.util.*,java.sql.*,liyaya.book.*" pageEncoding="GB18030"%><%
PreparedStatement pstmt = null;
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
pstmt = conn.prepareStatement("insert into book (name,price,bookcont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);
int ret = pstmt.executeUpdate();
if(ret > 0){
out.print("cheng gong");
}
pstmt.close();
conn.close();
} catch (Exception e) {
out.print("shibai");
e.printStackTrace();
}
%>
数据库 book.sql 文件如下 :create table book
(
id int primary key auto_increment,
name varchar(255),
price int,
bookCont int,
authr varchar(255)
);insert into book values (null,'Java开发典型模块大全',79,50,'明日科技');
insert into book values (null,'Java程序设计自学手册',49,50,'明日科技');
insert into book values (null,'Jsp技术开发大全',49,50,'明日科技');
bookCont cannot be resolved authr cannot be resolved
这个报错的意思是 你在addBook.jsp 没有将 name、price、bookCont、authr没有取值就直接插入,相当于刚开始没声明 int a=0; 你直接a = a+1,程序找不到a在哪里定义。所以,你在addBook.jsp中需要将index.jsp 中填写的数据取到,比如 String name = request.getParameter(“name”); String price = request.getParameter(“price ”); String bookCont = request.getParameter(“bookCont”); String author= request.getParameter(“author”); 然后就可以使用
pstmt = conn.prepareStatement("insert into book (name,price,bookcont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);
其中的 pstmt.setString(1, name)中的name为你的变量值,不是列名。祝你成功!呵呵。
其中的 pstmt.setString(1, name)中的name为你的变量值,不是列名。祝你成功!呵呵。
String name = request.getParameter("name");
int price = Integer.parseInt(request.getParameter("price"));
int bookCont = Integer.parseInt(request.getParameter("bookCont"));
String authr= request.getParameter("authr");
Connection conn = null;
liyaya a = new liyaya();
try {
Class.forName("com.mysql.jdbc.Driver");
//new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,price,bookCont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);
int ret = pstmt.executeUpdate();
if(ret > 0){
out.print("cheng gong");
}
pstmt.close();
conn.close();
} catch(ClassNotFoundException e){
e.printStackTrace();
}catch(NumberFormatException e){
return;
}catch(SQLException e){
e.printStackTrace();
}
%>再运行一次TOMCAT 又报错是这样的信息严重: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at org.apache.jsp.addBook_jsp._jspService(addBook_jsp.java:67)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)我在网上查了一下 也有可能参数没有传过来 在index.jsp 里怎么把参数传过去啊
大家帮帮忙了
int price = Integer.parseInt(request.getParameter("price"));
int bookCont = Integer.parseInt(request.getParameter("bookCont"));
String authr= request.getParameter("authr"); java.lang.NumberFormatException: null
红色部分报错,是因为你的页面的price或者bookCount没取到。你这些值一定是一个页面中,包含着表单,里面有这些参数。请确保你的数据提交.jsp到addBook.jsp中所有的参数都取到了。或者你把黄色部分处理下Null.比如 int price = request.getParameter("price")==null?0:Integer.parseInt(request.getParameter("price")); 每个都处理下,给个默认值,这样就不会报错了。如果你查看数据库的数据,全都是默认值的话,那就说明你页面中没有接收到这四个值。你可以先System.out.println(price+bookCount)这些值,然后看看问题出在哪。form提交,然后页面接收参数。一般业务都是这样的。所以,建议楼主细心的调试。
String name = request.getParameter("name");
int price = Integer.parseInt(request.getParameter("price"));
int bookCont = Integer.parseInt(request.getParameter("bookCont"));
String authr= request.getParameter("authr");
放到try 里面就不报错了 但是运行后网页是空的 什么都没有 数据提取不到呢 不知道怎么回事 Connection conn = null;
liyaya a = null;
try {
String name = request.getParameter("name");
int price = Integer.parseInt(request.getParameter("price"));
int bookCont = Integer.parseInt(request.getParameter("bookCont"));
String authr= request.getParameter("authr");
Class.forName("com.mysql.jdbc.Driver");
//new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=root");
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,price,bookCont,authr) values (?,?,?,?)");
pstmt.setString(1, name);
pstmt.setInt(2,price);
pstmt.setInt(3,bookCont);
pstmt.setString(4,authr);
int ret = pstmt.executeUpdate();
if(ret > 0){
out.print("cheng gong");
}
pstmt.close();
conn.close();
} catch(ClassNotFoundException e){
e.printStackTrace();
}catch(NumberFormatException e){
return;
}catch(SQLException e){
e.printStackTrace();
}