package com.qianwen.license.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * h2数据库 */ public class H2Helper { private static final Logger logger = LoggerFactory.getLogger(H2Helper.class); static final String JDBC_URL = "jdbc:h2:file:./data/licensedb";// 文件形式的 static final String DRIVER_CLASS = "org.h2.Driver"; static final String USER = "root"; static final String PASSWORD = "root"; static { try { Class.forName(DRIVER_CLASS); } catch (ClassNotFoundException e) { logger.error("注册数据库驱动失败", e); } } // static Connection conn = null; // LOCAL_FILE_PATH 本地文件(上传失败的),TRY_COUNT 重试次数 static final String INSERT_SQL = "insert into FILE_FAIL (id,LOCAL_FILE_PATH,FTP_HOST,FTP_PORT,FTP_USER,FTP_PASSWORD,REMOTE_PATH) values (?,?,?,?,?,?,?)"; public static Connection connectDb() { Connection conn = null; try { conn = java.sql.DriverManager.getConnection(JDBC_URL, USER, PASSWORD); } catch (SQLException e) { logger.error("连接数据库失败", e); e.printStackTrace(); } return conn; } /** * 创建数据库内的表等对象 */ public static void createDb() { Connection conn = null; try { conn = connectDb(); Statement statement = conn.createStatement(); //CN 名字与姓氏 OU 组织单位名称 O组织名称 L城市或区域名称 ST省/市/自治区名称 C双字母国家/地区代码 // 创建表,密钥钥库 statement.execute( "CREATE TABLE IF NOT EXISTS KEYSTORE (id BIGINT PRIMARY KEY, NAME VARCHAR(40) NOT NULL,CN VARCHAR(40) NOT NULL,OU VARCHAR(40),O VARCHAR(40) NOT NULL,L VARCHAR(50),ST VARCHAR(40),C CHAR(2))"); // 关闭连接 statement.close(); logger.info("h2数据表创建完成"); } catch (SQLException e) { logger.error("创建数据表失败", e); e.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { logger.error("关闭数据连接失败", e); } } } }