JDBC,java提供的连接数据库的标准方法之一。上学期的软件工程,与这学期的SOA,我分配到的人物都是把中间层业务逻辑发送过来的数据保存到数据库中,并且在数据库中进行查询等操作,最终把查询出来的结果再打包、按照指定的格式发送给业务逻辑。
上个学期的活儿,评心而论,我算是糊弄过去了,因为写的代码都完全没有经过测试……这个学期,如果不是有机会和潘神分到了一组,我也许也会继续糊弄下去。
潘神——他从没这么说过,但是他的行为这么告诉我了——告诉我最重要的事情就是:小伙子,写程序是一件很快乐的事情! 于是,我也开始兢兢业业写程序。
千里之行始于足下,我还是得把自己的活儿做好,也就是数据库部分。由于这部分的可复用性非常高,所以我决定将其写成一系列手记,以后自己写的时候比较好找到,也为通过搜索引擎偶尔进入到我这个小站的人留下一点参考。
对于一个软件、或者一个网络应用,当这个应用开始运行,第一步肯定是连接到数据库。但是有可能产生一个问题,就是需要判断现在是否已经加载了数据库驱动。如果已经加载了数据库驱动,就不重新加载;如果没有,则加载之。
潘神很神武的告诉我:用singleton设计模式来写!(设计模式真的是很有用的东西,有空学学) 。
于是,一个通用的、用于数据库连接和释放的类ConnectDatabaseConnectDatabase,可以这么写:
ConnectDabatase.java
package DB;
import java.sql.*;
public class ConnectDatabase {
private static ConnectDatabase instace = null;
private ConnectDatabase() throws Exception {
try {
Class.forName("org.hsqldb.jdbcDriver");
} catch (ClassNotFoundException ex) {
throw new RuntimeException("load jdbc-odbc driver error.");
}
}
public static ConnectDatabase getConnectDatabase() throws Exception {
if (instace == null) {
instace = new ConnectDatabase();
}
return instace;
}
public static Connection getConnection() throws SQLException {
Connection testConnection = null;
String url = "jdbc:hsqldb:file:db/test";
String username = "sa";
String password = "";
try {
testConnection = DriverManager.getConnection(url, username,
password);
System.out.println("建立数据库连接:成功!");
return testConnection;
} catch (SQLException ex) {
System.out.println("建立数据库连接:失败!");
return null;
}
}
public void close(Connection conn) throws SQLException {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
我们写一个小的简单的测试样例来测试我们的代码:
iDbTest.java
iDBTest.java
package DB;
import DB.ConnectDatabase;
import DB.Util; //这个文件用于实现数据库的各种增删改功能,现在为空。
import java.sql.*;
public class iDBTest {
private static ConnectDatabase DbConnectDatabase = null;
public static void main(String args[]) throws Exception {
DbConnectDatabase.getConnectDatabase().getConnection();
}
}
然后我们就能在输出的时候看到我们定义的信息:“建立数据库连接:成功!”