网站首页> 博客> 编写一个简单的 JDBC 程序,以mysql为例
编写一个简单的 JDBC 程序,以mysql为例
好文
2790
由于现在开发中用的都是框架,估计很多人连最基本的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 的窗口中按如下图中指引操作即可。
代码实现如下:
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 = "123456"; 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 = "123456"; 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); } } }
- 加入微信群,不定期分享源码和经验

- 签到活跃榜 连续签到送额外金币
- 最新博客
- 校园跑腿系统外卖系统软件平台大学生创业平台搭建 859
- 壹脉销客智能名片CRM系统小程序可二开源码交付部署 883
- 为啥没搞了 1352
- Nginx 的 5 大应用场景,太实用了! 1539
- CentOS 8-stream 安装Postgresql 详细教程 1838
- JAVA智慧校园管理系统小程序源码 电子班牌 Sass 模式 1411
- Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 1188
- Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 1160
- 致远OA权限 1979
- 发博客会有金币吗 1216