JDBC基础

    技术2022-07-16  68

    一.

    JDBC:Java DataBase Connectivity java语言数据库的连接技术

    ODBC: 一种比较早的桥接的一种方式,主要是依赖window网络进行连接的技术 目前已经被淘汰。

    二.

    驱动方式:本地的API的驱动方式

    用到java.sql包    扩展包 javax.sql

    主要步骤:

    1.使用DriverManager 进行加载驱动 Driver

    2.通过驱动的加载拿到连接对象 Connection

    3.通过connection对象获取到 Statement

    4.使用Statement对象 进行sql查询或更新

    5.查询执行完一定会拿到一个结果

    6.关闭资源()

    DriverManager 类主要负责:   驱动的加载和管理 获取连接

    Driver 接口: 具体的实现由数据库厂商提供

    Connection 接口 :主要负责连接工作

    代码实现:

    package com.wmh.web; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; //1.使用DriverManager 进行加载驱动 Driver //2.通过驱动的加载拿到连接对象 Connection //3.通过connection对象获取到 Statement //4.使用Statement对象 进行sql查询或更新 //5.查询执行完一定会拿到一个结果 //6.关闭资源 // URL  URI public class Test {         public static void main(String[] args) throws ClassNotFoundException, SQLException {                   //1 加载驱动          Class.forName("com.mysql.jdbc.Driver");                   //2获取连接对象          Connection conn =                   DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root","123456");          //3.获取statement对象          Statement st = conn.createStatement();                   //4.进行查询 返回结果集          ResultSet rs = st.executeQuery("select * from tb1");                   //5. 对结果进行遍历                   while(rs.next()){              System.out.println(rs.getString("username")+":"+rs.getInt("age")+":"+rs.getFloat("salary"));          }                   //6.关闭  rs  st conn                   rs.close();          st.close();          conn.close();              } }

    JDBC封装

    代码的优化:

    加载驱动 来做处理 private String driver = "com.mysql.jdbc.Driver"; private String url = "jdbc:mysql://localhost:3306/demo"; private String username = "root"; private String password = "123456"; //因为加载驱动这件事情 在程序启动的时候就被加载且只执行一次 static{      try {          Class.forName("com.mysql.jdbc.Driver");      } catch (ClassNotFoundException e) {          // TODO Auto-generated catch block          e.printStackTrace();      } }

    2.关于Connection获取方式

    静态方法

        public static Connection getConnection() throws SQLException{

             return DriverManager.getConnection(url, username,password);

        }

    3.资源关闭的问题

    /**      * 释放资源      * mysql的连接资源 比较珍稀的资源      * 尽晚的获取连接,尽早释放资源      * @param conn      * @param st      * @param rs      */     public static void jdbcClose(Connection conn,Statement st,ResultSet rs){                   try {              if(rs != null){              rs = null;          }              rs.close();          } catch (SQLException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }finally{                           try {                   if(st!=null){                       st = null;                   }                   st.close();              } catch (SQLException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();              }finally{                   try {                   if(conn!=null){                       conn = null;                   }                       conn.close();                   } catch (SQLException e) {                       // TODO Auto-generated catch block                       e.printStackTrace();                   }              }          }     }

    封装update:

    /**      * 添加,修改,删除      */         public void update(String sql){                   try {              conn = getConnection();                           st = conn.createStatement();                           int bRet = st.executeUpdate(sql);                           System.out.println(bRet);                       } catch (SQLException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }finally{              jdbcClose(conn, st);          }     }

    测试:

    public class JDBCUtilsTest {         public static void main(String[] args) {                            String sql = "insert into tb1 (username,age,salary) values('wangliu',9,1.00)";          String sql1 ="update tb1 set age = age-1 where username='wangliu'";          String sql2 = "delete from tb1 where username='wangliu'";                         JDBCUtils jdbcutils = new JDBCUtils();                   jdbcutils.update(sql2);                  } }

    JunitTest:单元测试

    public class JDBCUtilsTest {     @Test     public void testUpdate() {                   JDBCUtils jdbcutils = new JDBCUtils();          String sql = "insert into tb1 (username,age,salary) values('wangliu',9,1.00)";          jdbcutils.update(sql);     }         @Test     public void testUpdate1() {                   JDBCUtils jdbcutils = new JDBCUtils();          String sql1 ="update tb1 set age = age-1 where username='wangliu'";          jdbcutils.update(sql1);     }          }

     

    Processed: 0.009, SQL: 9