JDBC.java
上传用户:njlgjx
上传日期:2022-08-07
资源大小:9105k
文件大小:4k
源码类别:

图形图象

开发平台:

Java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.mwq.map.dao;
  6. import java.io.File;
  7. import java.sql.Connection;
  8. import java.sql.DriverManager;
  9. import java.sql.SQLException;
  10. import java.sql.Statement;
  11. import javax.swing.JOptionPane;
  12. /**
  13.  *
  14.  * @author Administrator
  15.  */
  16. public class JDBC {
  17.     private static final String DRIVERCLASS = "org.apache.derby.jdbc.EmbeddedDriver"; // 驱动
  18.     private static final String URL = "jdbc:derby:db_map"; // 协议
  19.     private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); // 用来保存数据库连接
  20.     private static Connection conn = null; // 数据库连接
  21.     
  22.     static { // 通过静态方法加载数据库驱动,并且在数据库不存在的情况下创建数据库
  23.         try {
  24.             Class.forName(DRIVERCLASS); // 加载数据库驱动
  25.             File databaseFile = new File("db_map");// 创建数据库文件对象
  26.             if (!databaseFile.exists()) {// 判断数据库文件是否存在
  27.                 String[] sqls = new String[5];// 定义创建数据库的SQL语句
  28.                 sqls[0] = "create table tb_map (id int not null,name varchar(8) not null)";
  29.                 sqls[1] = "insert into tb_map(id,name) values(1,'map.jpg')";
  30.                 sqls[2] = "create table tb_sort (id int not null,father_id int not null,name varchar(20) not null,primary key (id))";
  31.                 sqls[3] = "create table tb_sign (id int not null,sort_id int not null,x int not null,y int not null,title varchar(20) not null,show int not null,scale float not null,date date not null,remark varchar(200),primary key (id))";
  32.                 sqls[4] = "create view v_sign_sort as SELECT tb_sign.x, tb_sign.y, tb_sign.title, tb_sort.id, tb_sort.name, tb_sign.show, tb_sign.scale, tb_sign.date, tb_sign.remark FROM tb_sign INNER JOIN tb_sort ON tb_sign.sort_id = tb_sort.id ";
  33.                 conn = DriverManager.getConnection(URL + ";create=true");// 创建数据库连接
  34.                 threadLocal.set(conn);// 保存数据库连接
  35.                 Statement stmt = conn.createStatement();// 创建数据库连接状态对象
  36.                 for (int i = 0; i < sqls.length; i++) {// 通过执行SQL语句创建数据库
  37.                     stmt.execute(sqls[i]);// 执行SQL语句
  38.                 }
  39.                 stmt.close();// 关闭数据库连接状态对象
  40.             }
  41.         } catch (Exception e) {
  42.             e.printStackTrace();
  43.         }
  44.     }
  45.     protected static Connection getConnection() { // 创建数据库连接的方法
  46.         conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接
  47.         if (conn == null) { // 没有可用的数据库连接
  48.             try {
  49.                 conn = DriverManager.getConnection(URL);// 创建新的数据库连接
  50.                 threadLocal.set(conn); // 将数据库连接保存到线程中
  51.             } catch (Exception e) {
  52.                 String[] infos = {"未能成功连接数据库!", "请确认本软件是否已经运行!"};
  53.                 JOptionPane.showMessageDialog(null, infos);// 弹出连接数据库失败的提示
  54.                 System.exit(0);// 关闭系统
  55.                 e.printStackTrace();
  56.             }
  57.         }
  58.         return conn;
  59.     }
  60.     protected static boolean closeConnection() { // 关闭数据库连接的方法
  61.         boolean isClosed = true; // 默认关闭成功
  62.         conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接
  63.         threadLocal.set(null); // 清空线程中的数据库连接
  64.         if (conn != null) { // 数据库连接可用
  65.             try {
  66.                 conn.close(); // 关闭数据库连接
  67.             } catch (SQLException e) {
  68.                 isClosed = false; // 关闭失败
  69.                 e.printStackTrace();
  70.             }
  71.         }
  72.         return isClosed;
  73.     }
  74. }