以前使用过JDBC,对Mysql也进行过一些增删改查的操作,但是还真没有系统的学习过,现在借助传智播客的视频系统学习一下,下面记录这几天的心得。
1.首先得安装Mysql,这个就不说了,顺便下载Mysql-Connector-java这个JDBC实现包,把他/它导入到自己的工程,下面开始代码了
一切均基于这些代码,先把代码贴上再讲解
package com.bird.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public final class JdbcUtil {//保证不被继承 private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password = "mysql"; private JdbcUtil(){ //防止被new } static{//静态代码块,当类被装载到虚拟机的时候会运行这个代码块,这样保证只注册一次 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnecttion() 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.bird.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class Test01 { public static void template() throws Exception{ Connection conn = null; Statement st = null; ResultSet rs = null; try{ conn = JdbcUtil.getConnecttion();//建立连接 st = conn.createStatement();//创建语句 rs = st.executeQuery("select * from niao");//执行语句 while(rs.next()){//得到数据 System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)+"\t"); } }finally{ JdbcUtil.free(rs, st, conn); } } public static void main(String [] args) throws Exception{ Test01.template(); } }
2.首先说jdbcUtil类,它被定义为final,保证不被继承。3.注意他的static静态代码块,一个类当被加载到虚拟机的时候就会运行static静态代码块,这个代码块里面的内容就是注册,初始化JDBC里面的mysql的驱动,这个工作每次只需要一次,多了浪费,而且是其他所有工作的基础,所以定义为static,保证一开始就加载并且只运行一次。
4.他们的异常必须被抛出,让使用这个类的人处理。
5.下面强势关注free函数,貌似看起来很复杂的玩意,其实原理很简单,只是对每个关闭函数配备了一个try和catch和finally保证每个流关闭错误都不会影响下面的流的关闭,强调绝对的安全。
6.JdbcUtill类就是对这些的封装,而且各个方法都是静态的,可以直接调用。
下面分析Test01
7.连接是从JdbcUtil类的静态方法获得
8.下面的就是创建语句,执行SQL查询,然后获得返回结果了,最后别忘了释放资源。
好了 完毕 继续学习去喽