1818import com .fasterxml .jackson .databind .ObjectMapper ;
1919
2020import xin .ctkqiang .config .Configuration ;
21+ import xin .ctkqiang .dto .Database ;
2122import xin .ctkqiang .dto .Exploit ;
2223
2324/**
@@ -32,7 +33,7 @@ public class DatabaseController {
3233 /** 数据库名称 */
3334 protected final static String DB_NAME = Configuration .DB_NAME ;
3435
35- /** 数据库连接URL */
36+ /** MYSQL 数据库连接URL */
3637 protected final static String DB_URL = Configuration .DB_URL ;
3738
3839 /** 数据库用户名 */
@@ -44,6 +45,9 @@ public class DatabaseController {
4445 /** 数据库驱动类名 */
4546 protected final static String DB_DRIVER = Configuration .DB_DRIVER ;
4647
48+ /** SQLITE 数据库连接URL */
49+ protected final static String DB_SQLITE_URL = Configuration .DB_SQLITE_URL ;
50+
4751 /**
4852 * 静态初始化块
4953 * 在类加载时尝试加载数据库驱动
@@ -63,7 +67,35 @@ public class DatabaseController {
6367 * @throws SQLException 如果连接数据库时发生错误
6468 */
6569 protected Connection getConnection () throws SQLException {
66- return DriverManager .getConnection (DB_URL , DB_USER , DB_PASSWORD );
70+ String mode = Configuration .getDatabaseMode ();
71+ String upperMode = mode .toUpperCase ();
72+ System .out .println ("💡 切换数据库模式 -> " + upperMode );
73+
74+ switch (upperMode ) {
75+ case "SQLITE" :
76+ try {
77+ Class .forName ("org.sqlite.JDBC" );
78+ System .out .println ("📦 嘻嘻~SQLite 驱动已加载好惹!我已经抱好数据库小可爱啦~ฅ(^・ω・^ฅ)" );
79+ } catch (ClassNotFoundException e ) {
80+ System .err .println ("❌ 哎呀呀!SQLite JDBC 驱动不见惹~人家找不到驱动怎么贴贴数据库嘛喵呜呜。゚(゚´ω`゚)゚。" );
81+ throw new SQLException ("找不到 SQLite 驱动喵~要不要检查一下依赖有没有加对呀?" );
82+ }
83+ return DriverManager .getConnection (DatabaseController .DB_SQLITE_URL );
84+
85+ case "MYSQL" :
86+ default :
87+ try {
88+ Class .forName (DatabaseController .DB_DRIVER );
89+ System .out .println ("📦 MySQL 驱动加载完成!我打扮好了,要去连接数据库小哥哥啦~(๑•̀ㅂ•́)و✧" );
90+ } catch (ClassNotFoundException e ) {
91+ System .err .println ("❌ 呜呜呜 MySQL JDBC 驱动不见了~是不是打包的时候忘记带灵儿一起走啦 >///< " );
92+ throw new SQLException ("MySQL 驱动加载失败了喵~快检查一下 `.jar` 有没有遗漏吧!" );
93+ }
94+ return DriverManager .getConnection (
95+ DatabaseController .DB_URL ,
96+ DatabaseController .DB_USER ,
97+ DatabaseController .DB_PASSWORD );
98+ }
6799 }
68100
69101 /**
@@ -109,20 +141,52 @@ public void CreateTableIfNotExists() {
109141 + ");" ;
110142
111143 try {
112- // 确保数据库驱动已加载
113- Class .forName (DatabaseController .DB_DRIVER );
114-
115- // 创建数据库连接并执行建表语句
116- try (Connection conn = DriverManager .getConnection (
117- DatabaseController .DB_URL ,
118- DatabaseController .DB_USER ,
119- DatabaseController .DB_PASSWORD );
120- Statement stmt = conn .createStatement ()) {
121- stmt .execute (query );
122- System .out .println ("💾 数据表【内容信息】初始化成功!" );
144+
145+ String mode = Configuration .getDatabaseMode ();
146+ Database dbMode ;
147+
148+ try {
149+ dbMode = Database .fromValue (mode );
150+ } catch (IllegalArgumentException e ) {
151+ dbMode = null ;
152+ }
153+
154+ if (dbMode == null ) {
155+ System .out .println ("🥴 吃嗯的!这个数据库模式不认识喔:\" " + mode + "\" 妹妹我拒绝连接!" );
156+ return ;
157+ }
158+
159+ switch (dbMode ) {
160+ case SQLITE :
161+ // 加载 SQLite JDBC 驱动
162+ Class .forName ("org.sqlite.JDBC" );
163+
164+ // 构建连接(数据库文件叫 ling.sqlite)
165+ try (Connection conn = DriverManager .getConnection (DatabaseController .DB_SQLITE_URL );
166+ Statement stmt = conn .createStatement ()) {
167+ stmt .execute (query );
168+ System .out .println ("🎀 SQLite 模式下,表结构初始化好啦!已经准备好可爱的记录了喵~" );
169+ }
170+
171+ break ;
172+ case MYSQL :
173+ default :
174+ // 确保数据库驱动已加载
175+ Class .forName (DatabaseController .DB_DRIVER );
176+
177+ // 创建数据库连接并执行建表语句
178+ try (Connection conn = DriverManager .getConnection (
179+ DatabaseController .DB_URL ,
180+ DatabaseController .DB_USER ,
181+ DatabaseController .DB_PASSWORD );
182+ Statement stmt = conn .createStatement ()) {
183+ stmt .execute (query );
184+ System .out .println ("💾 MySQL 模式下,数据表【内容信息】初始化成功~♡" );
185+ }
123186 }
187+
124188 } catch (Exception e ) {
125- System .err .println ("❌ 数据表创建失败: " + e .getMessage ());
189+ System .err .println ("❌ 表创建失败惹呜呜呜呜:妹抖崩坏 > < \n " + e .getMessage ());
126190 e .printStackTrace ();
127191 }
128192 }
0 commit comments