编写一个简单的 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 的窗口中按如下图中指引操作即可。
代码实现如下:
1 package com.fhcq.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class JDBCTest { 10 11 public static void main(String[] args) throws Exception{ 12 // TODO Auto-generated method stub 13 test(); 14 } 15 16 static void test() throws SQLException, ClassNotFoundException { 17 18 // 1.注册驱动 19 //DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 20 //System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver"); 21 Class.forName("com.mysql.jdbc.Driver");//推荐方式 22 23 // 2.建立连接 24 String url = "jdbc:mysql://localhost:3306/jdbc"; 25 String user = "root"; 26 String password = "123456"; 27 Connection conn = DriverManager.getConnection(url, user, password); 28 29 // 3.创建语句 30 Statement st = conn.createStatement(); 31 32 // 4.执行语句 33 ResultSet rs = st.executeQuery("select * from user"); 34 35 // 5.处理结果(依次打印出 user 表中的4列基本数据项的值) 36 while (rs.next()) { 37 System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" 38 + rs.getObject(3)+"\t" + rs.getObject(4)); 39 } 40 41 // 6.释放资源 42 rs.close(); 43 st.close(); 44 conn.close(); 45 } 46 47 }
上述代码的实现其实是一个很不规范的例子,下面就来对其进行简单的优化:
我们首先写一个 JDBCUtils 工具类。首先来保证这个驱动只注册一次,然后再把【建立连接】 和 【释放资源】 的部分也都添加进来,这样在我们每次获取连接的时候都通过这个工具类来拿,还有就是不会每写一次都要把【释放资源】那么一大段代码都给带上了。
1 package com.fhcq.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public final class JDBCUtils { 10 11 private static String url = "jdbc:mysql://localhost:3306/jdbc"; 12 private static String user = "root"; 13 private static String password = "123456"; 14 15 private JDBCUtils(){ 16 17 } 18 19 static{ 20 21 // 1.注册驱动 22 try { 23 Class.forName("com.mysql.jdbc.Driver"); 24 } catch (ClassNotFoundException e) { 25 throw new ExceptionInInitializerError(e); 26 } 27 } 28 29 public static Connection getConnection() throws SQLException{ 30 retu DriverManager.getConnection(url, user, password); 31 } 32 33 public static void free(ResultSet rs,Statement st,Connection conn){ 34 35 try{ 36 if(rs!=null){ 37 rs.close(); 38 } 39 }catch(SQLException e){ 40 e.printStackTrace(); 41 }finally{ 42 try{ 43 if(st != null){ 44 st.close(); 45 } 46 }catch(SQLException e){ 47 e.printStackTrace(); 48 }finally{ 49 if(conn!=null){ 50 try { 51 conn.close(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 } 58 } 59 }
剩下的我们就来简化一下原有的代码,这样处理后的代码就可以作为我们的一个模板来使用了。
1 package com.fhcq.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 7 public class JDBCTest { 8 9 public static void main(String[] args) throws Exception { 10 // TODO Auto-generated method stub 11 template(); 12 } 13 14 static void template() throws Exception{ 15 16 Connection conn = null; 17 Statement st = null; 18 ResultSet rs = null; 19 20 try { 21 22 // 2.建立连接 23 conn = JDBCUtils.getConnection(); 24 25 // 3.创建语句 26 st = conn.createStatement(); 27 28 // 4.执行语句 29 rs = st.executeQuery("select * from user"); 30 31 // 5.处理结果 32 while(rs.next()){ 33 System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) 34 + "\t"+ rs.getObject(3)+"\t" + rs.getObject(4)); 35 } 36 37 }finally{ 38 JDBCUtils.free(rs, st, conn); 39 } 40 41 } 42 43 }
作者:Janson۰Wong
来源链接:https://www.cnblogs.com/justlove/p/6946032.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。