⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbc.java

📁 数码照片管理程序是我们公司在开发过程中的用java编写的模块
💻 JAVA
字号:
package com.mwq.album.dao;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class JDBC {

    private static final String DRIVERCLASS = "org.apache.derby.jdbc.EmbeddedDriver";// 数据库驱动
    private static final String URL = "jdbc:derby:db_album";// 数据库URL
    private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();// 用来保存数据库连接
    private static Connection conn = null;// 数据库连接
    

    static { // 通过静态方法加载数据库驱动,并且在数据库不存在的情况下创建数据库

        try {
            Class.forName(DRIVERCLASS); // 加载数据库驱动

            File db_album = new File("db_album");// 创建数据库文件对象

            if (!db_album.exists()) {// 数据库文件不存在

                createDatabase();// 创建数据库

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void createDatabase() throws Exception {

        String[] sqls = new String[2];// 定义创建数据库的SQL语句

        sqls[0] = "create table tb_album (id int not null,father_id int not null,name varchar(20) not null,primary key (id))";
        sqls[1] = "create table tb_photo (num varchar(28) not null,album_id int not null,date date not null,title varchar(20) not null,note varchar(200),primary key (num))";
        conn = DriverManager.getConnection(URL + ";create=true");// 创建数据库连接

        threadLocal.set(conn);// 保存数据库连接

        Statement stmt = conn.createStatement();// 创建数据库连接状态对象

        for (int i = 0; i < sqls.length; i++) {// 遍历SQL数组创建数据库

            stmt.execute(sqls[i]);// 执行SQL语句

        }
        stmt.close();// 关闭数据库连接状态对象

    }

    protected static Connection getConnection() { // 创建数据库连接的方法

        conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接

        if (conn == null) { // 没有可用的数据库连接

            try {
                conn = DriverManager.getConnection(URL);// 创建新的数据库连接

                threadLocal.set(conn); // 将数据库连接保存到线程中

            } catch (Exception e) {
                String[] infos = {"未能成功连接数据库!", "请确认本软件是否已经运行!"};
                JOptionPane.showMessageDialog(null, infos);// 弹出连接数据库失败的提示

                System.exit(0);// 关闭系统

                e.printStackTrace();
            }
        }
        return conn;
    }

    protected static boolean closeConnection() { // 关闭数据库连接的方法

        boolean isClosed = true; // 默认关闭成功

        conn = (Connection) threadLocal.get(); // 从线程中获得数据库连接

        threadLocal.set(null); // 清空线程中的数据库连接

        if (conn != null) { // 数据库连接可用

            try {
                conn.close(); // 关闭数据库连接

            } catch (SQLException e) {
                isClosed = false; // 关闭失败

                e.printStackTrace();
            }
        }
        return isClosed;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -