文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>网上书店___使用Servlet通过JDBC操作MySQL数据库

网上书店___使用Servlet通过JDBC操作MySQL数据库

时间:2008-03-11  来源:仙尘

   

 

   网上书店___

              使用Servlet通过JDBC操作MySQL数据库

 

       编写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,用户名,密码

 

 

<servlet>

 

    <servlet-name>CreateDBServlet</servlet-name>

    <servlet-class>cn.apache.pl.CreateDBServlet</servlet-class>

 

    <init-param>

       <param-name>driverClass</param-name>

       <param-value>com.mysql.jdbc.Driver</param-value>

    </init-param>

 

    <init-param>

       <param-name>url</param-name>

       <param-value>jdbc:mysql://localhost:3306/mysql</param-value>

    </init-param>

 

    <init-param>

       <param-name>user</param-name>

       <param-value>root</param-value>

    </init-param>

 

    <init-param>

       <param-name>password</param-name>

       <param-value>123</param-value>

    </init-param>

 

</servlet>

 

<servlet-mapping>

 

    <servlet-name>CreateDBServlet</servlet-name>

    <url-pattern>/createdb</url-pattern>

 

</servlet-mapping>

 

4,  将JDBC驱动类放到<CATALANA_HOME>\bin目录中,编译CreateDBServlet.java文件,

    启动Tomcat服务器,在浏览器中打开http://localhost:8080/ch08/createdb,页面显示

    “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

 

 

                                                               仙尘于08年3月11日晚

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载