tomcat7 windows 7系统 mysql 5.5 用JDBC连接mysql写入数据库数据时报错

HTTP Status 500 - type Exception report message description The server encountered an internal error

用jsp建立数据库时报这个错误。但是自己手动建立数据库,是可以在网页读取出来的。代码如下package org.sunxin.lesson.jsp.bookstore;

import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;
import java.sql.*;

public class CreateDBServlet extends HttpServlet
{
private String url;
private String user;
private String password;

public void init() throws ServletException
{
String driverClass=getInitParameter("driverClass");
url=getInitParameter("url");
user=getInitParameter("user");
password=getInitParameter("password");
try
{
Class.forName(driverClass);
}
catch(ClassNotFoundException ce)
{
throw new UnavailableException("加载数据库驱动失败!");
}
}

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException,IOException
{
Connection conn=null;
Statement stmt=null;
try
{
conn=DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
stmt.executeUpdate("create database bookstore");
stmt.executeUpdate("use bookstore");
stmt.executeUpdate("create table bookinfo(id INT not null primary key,title VARCHAR(50) not null,author VARCHAR(50) not null,bookconcern VARCHAR(100) not null,publish_date DATE not null,price FLOAT(4,2) not null,amount SMALLINT,remark VARCHAR(200)) ENGINE=InnoDB");
stmt.addBatch("insert into bookinfo values(1,'Java从入门到精通','张三','张三出版社','2004-6-1',34.00,35,null)");
stmt.addBatch("insert into bookinfo values(2,'JSP深入编程','李四','李四出版社','2004-10-1',56.00,20,null)");
stmt.addBatch("insert into bookinfo values(3,'J2EE高级编程','王五','王五出版社','2005-3-1',78.00,10,null)");
stmt.executeBatch();

PrintWriter out=resp.getWriter();
out.println("success!");
out.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
finally
{
if(stmt!=null)
{
try
{
stmt.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
stmt=null;
}
if(conn!=null)
{
try
{
conn.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
conn=null;
}
}
}
}
网页报错

第1个回答  2011-12-11
stmt.executeUpdate("create database bookstore");
stmt.executeUpdate("use bookstore");
stmt.executeUpdate("create table bookinfo(id INT not null primary key,title VARCHAR(50) not null,author VARCHAR(50) not null,bookconcern VARCHAR(100) not null,publish_date DATE not null,price FLOAT(4,2) not null,amount SMALLINT,remark VARCHAR(200)) ENGINE=InnoDB");
你可以查下 这个对象可以用的sql 可以创建数据库吗
或者说 conn=DriverManager.getConnection(url,user,password);
你连的是哪个数据库啊 用户名就是url 密码是user?参数传的是页面的数据吗?数据库用户名和密码是这个吗
如果可以的话 你可以查看下服务是否开着 一般都是建好数据库去连 这样 语句中创建数据库的我是很少见 你试试吧 实践是最好的方法追问

user是用户名呀,后面是密码。url是说的JDBC url。我的是mysql,也就是JDBC:mysql://localhost:3306/databasename.用户名是root,密码是12345678,自己设置的

追答

那你连接数据那应该填root和12345678 不然用户名和密码对不上 怎么去连数据库呢

追问


url
jdbc:mysql://localhost:3306/bookstore

user
root

追答

你搜下配置文件里面的用户名和密码怎么设置吧 你有点迷糊了 你百度下

追问

是不是该用标签???

追答

不是
就是标签里面的用户名和密码 你重新建立一个新的项目 然后去看配置文件 可以看到原版的用户名和密码

追问

mysql的用户名就是root呀,密码是自己设置的,这个错不了的呀,因为我可以读出数据的,只是建立,和写入有问题。

第2个回答  2011-12-11
你的数据,从jsp页面是用什么方法递交过来的啊?
"post" 还是.."get"
你看看你的servlet用什么方法处理的呢?
doPost还是doGet呢.....呵呵呵,换换,应该没什么问题了
重写一下父类的doPost方法.
把你doGet中写的复制进去!
------------------------------------------
顺便在你servlet的init初始化方法下,打印一下,看看你都获得了什么数据
servlet的生命周期,只能进行一次初始化吧!追问

是get方式啊,我用的是getinitparameter()方法来得到诸如driverclass,url,user,password之类的数据。不需要dopost吧。

追答

看看你的jsp页面的form中的action是用什么方法

追问

没有jsp页面,用浏览器直接访问这个servlet,

CreateDBServlet
/createdb

追答

把你初始化方法里的代码拿到外面看看
-----------------------------------------------
用doPost()方法........看看效果!!

追问

已经解决了。。。谢谢!是因为在部署阶段,标签放置的位置有了一点小差错。。

本回答被提问者采纳
第3个回答  2011-12-11
我来刷分的
相似回答
大家正在搜