分类:
2008-05-15 20:46:49
编写CreateDBServlet这个Servlet来完成创建bookstore数据库,新建bookinfo表及向其中插入数据的功能,来演示JDBC的使用!
运行环境:
JDK 1.6.0
Tomcat 6.0.14
JDBC 3.0.17
MySQL5.0.22
1, 编写CreateDBServlet.java
这个Servlet用于创建存储图书信息的数据库和表
/* *用于创建存储图书信息的数据库和表 */ package cn.apache.pl; import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class CreateDBServlet extends HttpServlet { private String url; private String user; private String password; public void init() throws ServletException { /* *调用getInitParameter()方法得到JDBC驱动程序的类名, *连接URL,用户名,密码,我们将这些信息放在web.xml文件中配置, *如果需要更好数据库或连接信息时,只需要修改web.xml文件即可 */ String driverClass = getInitParameter("driverClass"); url = getInitParameter("url"); user = getInitParameter("user"); password = getInitParameter("password"); /* *调用Class类的静态方法forName()加载并注册JDBC驱动程序, *如果没有找到驱动程序类,抛出UnavailableException异常, *通知Servlet容器,该Servlet永久不可用 */ 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 { //调用DriverManager类的静态方法getConnection()得到数据库的连接对象 conn = DriverManager.getConnection(url, user, password); //调用连接对象的createStatement()方法创建一个Statement对象 stmt = conn.createStatement(); //利用Statement对象创建bookstore数据库 stmt.executeUpdate("create database bookstore"); //user bookstore数据库 stmt.executeUpdate("use bookstore"); /* *创建bookinfo数据表,用来存储图书信息,新建以下字段: *id 图书编号 *title 书名 *author 作者 *bookconcern 出版社 *publish_date 出版日期 *price 价格 *amount 数量 *remark 备注 */ //该条语句最后"ENGINE = InnoDB",用于指定表的存储引擎使用InnoDB stmt.execute("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"); //调用Statement对象的addBatch()方法将插入数据的SQL语句组成一个命令列表 stmt.addBatch("insert into bookinfo values(1,'JAVA从入门到精通','孙卫琴','电子工业出版社','2004-6-1',34.00,35,null)"); stmt.addBatch("insert into bookinfo values(2,'JSP应用开发详解','刘小华','清华大学出版社','2005-10-3',56.00,20,null)"); stmt.addBatch("insert into bookinfo values(3,'MySQL数据库编程','孙鑫','人民邮电出版社','2006-6-29',78.00,10,null)"); //调用executeBatch()方法批量执行这些SQL语句 //大量SQL语句批量执行可以显著提高性能,减少服务器负载 stmt.executeBatch(); //如果创建成功,则输出success! PrintWriter out = resp.getWriter(); out.println("success!"); out.close(); }catch(SQLException se) { se.printStackTrace(); /*在finally语句中依次关闭Statement对象和Connection对象, *之所以在finally语句中处理,可以保证不管是正常执行还是执行 *过程中发生了异常,都会关闭它们. */ }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; } } } } |
2,bookinfo表的结构
字 段 |
描 述 |
id |
bookinfo表的主键,整型,唯一标示一本图书 |
title |
字符串类型,书名 |
author |
字符串类型,作者 |
bookconcern |
字符串类型,出版社 |
public_date |
日期类型,出版日期 |
price |
单精度浮点型,价格 |
amount |
整型,库存量 |
remark |
字符串类型,备注 |
3, web.xml文件配置如下:
通过调用getInitParameter()方法得到JDBC驱动程序的类名,连接URL,用户名,密码
|
4, 将JDBC驱动类放到
启动Tomcat服务器,在浏览器中打开,页面显示
“success!”,则表明创建数据库和表成功.
5, 在MySQL命令行中,
<1>查看已经存在的数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bookstore |
| mysql |
| storedb |
| test |
+--------------------+
5 rows in set (0.02 sec)
<2>查看bookstore数据库中存在的表:
mysql> use bookstore;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_bookstore |
+---------------------+
| bookinfo |
+---------------------+
1 row in set (0.00 sec)
<3>查看表结构:
mysql> desc bookinfo;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| title | varchar(50) | NO | | NULL | |
| author | varchar(50) | NO | | NULL | |
| bookconcern | varchar(100) | NO | | NULL | |
| publish_date | date | NO | | NULL | |
| price | float(4,2) | NO | | NULL | |
| amount | smallint(6) | YES | | NULL | |
| remark | varchar(200) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)
<4>查看表内容:
mysql> select * from bookinfo;
+----+------------------+--------+----------------+--------------+-------+--------+--------+
| id | title | author | bookconcern | publish_date | price | amount | remark |
+----+------------------+--------+----------------+--------------+-------+--------+------
| 1 | JAVA从入门到精通 | 孙卫琴 | 电子工业出版社 | 2004-06-01 | 34.00 | 35 | NULL |
| 2 | JSP应用开发详解 | 刘小华 | 清华大学出版社 | 2005-10-03 | 56.00 | 20 | NULL |
| 3 | MySQL数据库编程 | 孙鑫 | 人民邮电出版社 | 2006-06-29 | 78.00 | 10 | NULL |
+----+------------------+--------+----------------+--------------+-------+--------+------
3 rows in set