监听器-启动会初始化表 学习笔记:

遇到问题:

数据库连接问题;后面采用固定写法:

解决问题

   /**c3p0取得数据源*/
    public static DataSource  getDataSource() throws Exception  {

        ComboPooledDataSource cpds = new ComboPooledDataSource();
        cpds.setDriverClass("com.mysql.jdbc.Driver");
        cpds.setJdbcUrl("jdbc:mysql://192.168.47.196:3306/test");
        cpds.setUser("root");
        cpds.setPassword("123456");

        ComboPooledDataSource datasSource = cpds;

        return datasSource;

    }

监听器配置:


import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import cn.vote.dao.SystemDao;

public class SystemListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

        SystemDao systemDao = new SystemDao();
        try {
            systemDao.createTable("liwen");
            systemDao.init();
        } catch (Exception e) {

            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        try {
            SystemDao systemDao = new SystemDao();
            systemDao.dropTable("liwen");
        } catch (Exception e) {

            e.printStackTrace();
        }

    }
}

web.xml配置

    <listener>
        <listener-class>cn.xijie.listener.SystemListener</listener-class>
    </listener>

Java代码


import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

import cn.xijie.JdbcUtil.JdbcUtil;

public class SystemDao {
    //删除表
        public void dropTable(String tableName) throws Exception{
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "drop table if exists " + tableName;
            runner.update(sql);
        }

        //创建表
        public void createTable(String tableName) throws Exception{
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "CREATE TABLE IF NOT EXISTS `"+tableName+"`(`runoob_id` INT UNSIGNED AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,`runoob_author` VARCHAR(40) NOT NULL,`submission_date` DATE,PRIMARY KEY ( `runoob_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;";
            runner.update(sql);
        }

        //初始化数据
        public void init() throws Exception{
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "INSERT INTO liwen(runoob_title, runoob_author, submission_date) VALUES (\"MySQL\", \"liwen\", NOW());";
            runner.update(sql);
        }

}

结果:

成功

原文地址:http://blog.51cto.com/357712148/2105629

时间: 2024-10-05 23:25:25

监听器-启动会初始化表 学习笔记:的相关文章

Servlet乘法表学习笔记

一.控制台实现乘法表 package com.shanrengo; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServle

2018-03-26MySQL启动关闭常用命令学习笔记

MySQL常用基本命令 优雅关闭数据库方法 1.mysqladmin方法: mysqladmin -uroot -p shutdown 2.自带的脚本 /etc/init.d/mysqld stop 2.kill信号的方法 kill -USR2 'cat path/pid' 提示:推荐前两个方法,自己写脚本启动停止就用第一个.自己写脚本的原则就是调用mysqld_safe指定实例配置文件启动关闭的时候调用mysqladmin shutdown来关闭. 多实例启动关闭方法 启动 /data/330

windows注册表学习笔记

注册表,想起来了就学学,方便操作.无需把它当成重要学问,今日就学一波,作为了解. 一.注册表清理脚本 主要是删除临时文件,旧文件.并不能够删除无效的键 @echo off del/f/s/q %systemdrive%\*.tmp del/f/s/q %systemdrive%\*._mp del/f/s/q %systemdrive%\*.log del/f/s/q %systemdrive%\*.gid del/f/s/q %systemdrive%\*.chk del/f/s/q %sys

自定义属性之图片切换实例——初始化——JS学习笔记2015-5-28(第41天)

思路: 延续上一节说的利用自定义属性来作为桥梁,建立匹配关系,然后改变页面中元素的显示效果: 首先需要写好一个合理的HTML结构   // 何为合理呢?就是说考虑这个结构哪些需要提前写好的,哪些又是可以通过程序来动态实现的 然后写好相应的CSS样式文件,让基本的构造出来: 最后通过JS来控制相关页面元素的显示效果: 实例: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type"

《Oracle完全学习手册》 表空间&amp;管理控制文件与日志文件&amp;表 学习笔记

表空间 表空间是Oracle数据结构中最大的逻辑结构 基本表空间 临时表空间:排序.汇总过程中产生的临时数据 大文件表空间:存储大型数据 非标准数据块表空间 撤销表空间:存储撤销数据 基本表空间 创建一个名为TEMP0301的表空间 create tablespace temp0301 datafile 'F:\SQL\use0301.dbf' size 20m autoextend on next 10m maxsize unlimited; create tablespace temp030

hash表学习笔记

一.hash表的基本概念和优缺点比较 hash表又称哈希表 ,是一种数据结构,与链表.二叉树有很大区别. 1.hash表优缺点 优点:能够在常数级的时间复杂度上进行查找,并且插入数据和删除数据简单.(Hash未满的时候速度很快) 缺点:不支持排序,一般比用线性表存储需要更多时间,并且记录的关键字不能重复 2.与链表比较 链表:查询上表中的数据从头开始遍历,直到查到或者查找失败. hash:根据存储数据特定关键字,然后根据关键字直接查询想要得到数据. hash存储位置通常称作Hash地址. Has

嵌套循环 99乘法表 学习笔记

class TestJiuJiu  { public static void main(String[] args)  { for(int i =1; i<=9; i++){ for(int j = 1; j<=i; j++ ){ System.out.print(i+"*"+j+"="+ i*j +"\t" ); } System.out.println(); } } }

No4.数组的基本操作__Java学习笔记

1 public class HelloArrayOp { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 6 System.out.println("第131页:数组的基本操作:" 7 +"\n"+"遍历数组" 8 +"\n"+"填充替换数组元素" 9 +"\n"+&

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回