当前位置:web 服务器 > Tomcat >>

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; } } } }
追问:是get方式啊,我用的是getinitparameter()方法来得到诸如driverclass,url,user,password之类的数据。不需要dopost吧。没有jsp页面,用浏览器直接访问这个servlet,
    
    <servlet-mapping>
        <servlet-name>CreateDBServlet</servlet-name>
        <url-pattern>/createdb</url-pattern>
    </servlet-mapping>已经解决了。。。谢谢!是因为在部署阶段,<servlet>标签放置的位置有了一点小差错。。user是用户名呀,后面是密码。url是说的JDBC url。我的是mysql,也就是JDBC:mysql://localhost:3306/databasename.用户名是root,密码是12345678,自己设置的<context-param>
	    <param-name>url</param-name>
	    <param-value>jdbc:mysql://localhost:3306/bookstore</param-value>
    </context-param>
    <context-param>
	    <param-name>user</param-name>
	    <param-value>root</param-value>
    </context-param>是不是该用标签<init-param>???mysql的用户名就是root呀,密码是自己设置的,这个错不了的呀,因为我可以读出数据的,只是建立,和写入有问题。
答案:你的数据,从jsp页面是用什么方法递交过来的啊?
"post" 还是.."get"
你看看你的servlet用什么方法处理的呢?
doPost还是doGet呢.....呵呵呵,换换,应该没什么问题了
重写一下父类的doPost方法.
把你doGet中写的复制进去! 
------------------------------------------
顺便在你servlet的init初始化方法下,打印一下,看看你都获得了什么数据
servlet的生命周期,只能进行一次初始化吧!
其他: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?参数传的是页面的数据吗?数据库用户名和密码是这个吗
如果可以的话 你可以查看下服务是否开着 一般都是建好数据库去连 这样 语句中创建数据库的我是很少见 你试试吧 实践是最好的方法 我来刷分的 

上一个:mysql添加记录自动100条应该怎么写啊?
下一个:mysql 千万级数据库如何进行多张结构相同的表联合查询?如何优化或设置提高查询速度?

Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,