JDBC基础

一.

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封装

代码的优化:

  1. 加载驱动 来做处理
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);

    }

        



}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值