编写一个简单的 JDBC 程序

时间:2023-03-08 21:41:49
编写一个简单的 JDBC 程序

连接数据库的步骤:

1、注册驱动(只做一次)

2、建立连接(Connection)

3、创建执行SQL的语句(Statement)

4、执行语句

5、处理执行结果(ResultSet)

6、释放资源

在写代码之前,我们需要导入数据库驱动,即 mysql-connector-java-5.0.8-bin.jar

导入 jar 包步骤:在项目名(JDBCDemo)上鼠标右键,然后左键点击 Properties,在弹出的 Properties for JDBCDemo 的窗口中按如下图中指引操作即可。

编写一个简单的 JDBC 程序

代码实现如下:

 package com.fhcq.jdbc;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCTest { public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
test();
} static void test() throws SQLException, ClassNotFoundException { // 1.注册驱动
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");//推荐方式 // 2.建立连接
String url = "jdbc:mysql://localhost:3306/jdbc";
String user = "root";
String password = "";
Connection conn = DriverManager.getConnection(url, user, password); // 3.创建语句
Statement st = conn.createStatement(); // 4.执行语句
ResultSet rs = st.executeQuery("select * from user"); // 5.处理结果(依次打印出 user 表中的4列基本数据项的值)
while (rs.next()) {
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"
+ rs.getObject(3)+"\t" + rs.getObject(4));
} // 6.释放资源
rs.close();
st.close();
conn.close();
} }

上述代码的实现其实是一个很不规范的例子,下面就来对其进行简单的优化:

我们首先写一个 JDBCUtils 工具类。首先来保证这个驱动只注册一次,然后再把【建立连接】 和 【释放资源】 的部分也都添加进来,这样在我们每次获取连接的时候都通过这个工具类来拿,还有就是不会每写一次都要把【释放资源】那么一大段代码都给带上了。

 package com.fhcq.jdbc;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public final class JDBCUtils { private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = ""; private JDBCUtils(){ } static{ // 1.注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
} public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
} public static void free(ResultSet rs,Statement st,Connection conn){ try{
if(rs!=null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(st != null){
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}

剩下的我们就来简化一下原有的代码,这样处理后的代码就可以作为我们的一个模板来使用了。

 package com.fhcq.jdbc;

 import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement; public class JDBCTest { public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
template();
} static void template() throws Exception{ Connection conn = null;
Statement st = null;
ResultSet rs = null; try { // 2.建立连接
conn = JDBCUtils.getConnection(); // 3.创建语句
st = conn.createStatement(); // 4.执行语句
rs = st.executeQuery("select * from user"); // 5.处理结果
while(rs.next()){
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
+ "\t"+ rs.getObject(3)+"\t" + rs.getObject(4));
} }finally{
JDBCUtils.free(rs, st, conn);
} } }