zoukankan      html  css  js  c++  java
  • Java通过JDBC 进行MySQL数据库操作

    转自: http://blog.csdn.net/tobetheender/article/details/52772157

    Java通过JDBC 进行MySQL数据库操作

    原创 2016年10月10日 16:46:41

    一:前言

    在测试工作中难免会和数据库打交道,可能大家对数据库语句都比较熟,比如常见的增删改查等,但是当我们在做自动化测试时,比如接口测试,大部分请求参数,可能都是从数据库中取值,并且接口返回值最后都会记录在数据库中,这样前提就需要和数据库建立连接,才能进行读写操作。


    二:JDBC是什么

    java提供了一个API也就是JDBC(Java Data Base Connectivity),可以为多种关系数据库提供统一访问和操作,它由一组用Java语言编写的类和接口组成。

    • 没有jdbc之前 
      java开发人员需要维护不同的数据库的驱动程序,如果数据库的底层实现改变,驱动程序可能会随之改变!!

    这里写图片描述

    • 有了jdbc之后: 
      java开发人员只需维护java应用和一套规范,也就是jdbc接口。数据库厂商提供具体的java驱动程序,数据库厂商的底层实现改变,厂商随之更新驱动程序,而不影响java应用程序!!

    这里写图片描述


    三:实现步骤

    1. 导入数据包 
      需要包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.* 就可以了.

    2. 添加JDBC驱动程序包 
      添加jar程序驱动包http://www.mysql.com/downloads/connector/j,初始化驱动程序,可以与数据库打开一个通信通道。

    3. 打开数据库连接 
      需要使用DriverManager.getConnection() 方法创建一个Connection对象,它代表与数据库的物理连接。

    4. 执行数据库操作 
      需要使用类型声明的对象建立并提交一个SQL语句到数据库。

    5. 从结果集中提取数据 
      要求使用适当的关于ResultSet.getXXX()方法来检索结果集的数据。

    6. 清理环境 
      需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。

    JDBCUtil类

    • 主程序
      
      1 package com.jdbc;
      2 
      3 //导入数据包
      4 import java.io.InputStream;
      5 import java.sql.Connection;
      6 import java.sql.DriverManager;
      7 import java.sql.ResultSet;
      8 import java.sql.SQLException;
      9 import java.sql.Statement;
     10 import java.util.Properties;
     11 
     12 /**
     13  * @author Charlie.chen
     14  *
     15  */
     16 
     17 public class JDBCUtil{
     18 
     19     // 驱动包名和数据库url
     20     private static String url = null;
     21     private static String driverClass = null;
     22     // 数据库用户名和密码
     23     private static String userName = null;
     24     private static String password = null;
     25 
     26     /**
     27      * 初始化驱动程序
     28      * 静态代码块中(只加载一次)
     29      */
     30     static{
     31         try {
     32             //读取db.properties文件
     33             Properties prop = new Properties();
     34 
     35             /**
     36              * 使用类路径的读取方式
     37              *  / : 斜杠表示classpath的根目录
     38              *     在java项目下,classpath的根目录从bin目录开始
     39              *     在web项目下,classpath的根目录从WEB-INF/classes目录开始
     40              */
     41             InputStream in = JDBCUtil.class.getResourceAsStream("/db.properties");
     42 
     43             //加载文件
     44             prop.load(in);
     45             //读取信息
     46             url = prop.getProperty("url");
     47             driverClass = prop.getProperty("driverClass");
     48             userName = prop.getProperty("user");
     49             password = prop.getProperty("password");
     50 
     51             //注册驱动程序
     52             Class.forName(driverClass);
     53         } catch (Exception e) {
     54             e.printStackTrace();
     55             System.out.println("驱程程序注册出错");
     56         }
     57     }
     58 
     59 
     60     /**
     61      * 打开数据库驱动连接
     62      */
     63     public static Connection getConnection(){
     64         try {
     65             Connection conn = DriverManager.getConnection(url, userName, password);
     66             return conn;
     67         } catch (SQLException e) {
     68             e.printStackTrace();
     69             throw new RuntimeException(e);
     70         }
     71     }
     72 
     73 
     74 
     75     /**
     76      * 清理环境,关闭连接(顺序:后打开的先关闭)
     77      */
     78     public static void close(Connection conn,Statement stmt,ResultSet rs){
     79         if(rs!=null)
     80             try {
     81                 rs.close();
     82             } catch (SQLException e1) {
     83                 e1.printStackTrace();
     84                 throw new RuntimeException(e1);
     85             }
     86         if(stmt!=null){
     87             try {
     88                 stmt.close();
     89             } catch (SQLException e) {
     90                 e.printStackTrace();
     91                 throw new RuntimeException(e);
     92             }
     93         }
     94         if(conn!=null){
     95             try {
     96                 conn.close();
     97             } catch (SQLException e) {
     98                 e.printStackTrace();
     99                 throw new RuntimeException(e);
    100             }
    101         }
    102     }
    103 
    104 
    105 
    106     public static void main(String[] args) {
    107 
    108        Connection conn = null;
    109        Statement stmt = null;
    110        ResultSet rs = null;
    111 
    112 
    113        conn=JDBCUtil.getConnection();
    114        try {
    115             stmt=conn.createStatement();
    116             //准备sql操作语句
    117             String sql= "SELECT id, first, last, age FROM YourDBName";
    118             rs = stmt.executeQuery(sql);
    119 
    120             //从结果集中提取数据
    121             while(rs.next()){
    122                  int id  = rs.getInt("id");
    123                  int age = rs.getInt("age");
    124                  String first = rs.getString("first");
    125                  String last = rs.getString("last");
    126 
    127                  System.out.print("ID: " + id);
    128                  System.out.print(", Age: " + age);
    129                  System.out.print(", First: " + first);
    130                  System.out.println(", Last: " + last);
    131             }
    132           } catch (SQLException e) {
    133             // TODO Auto-generated catch block
    134             e.printStackTrace();
    135           }finally{
    136               JDBCUtil.close(conn, stmt, rs);
    137           }
    138      }
    139 }
    • JDBC配置文件db.properties
    • 1 url=jdbc:mysql://localhost/yourDBName
      2 user=root
      3 password=root
      4 driverClass=com.mysql.jdbc.Driver

      四:JDBC核心API

      JDBC接口核心的API

      • java.sql.*
      • javax.sql.*

      •  1 |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
         2         |- connect(url, properties):  连接数据库的方法。
         3                 url: 连接数据库的URL 
         4                     URL语法: jdbc协议:数据库子协议://主机:端口/数据库
         5                     user: 数据库的用户名
         6                     password: 数据库用户密码
         7     |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
         8         |-registerDriver(driver)  : 注册驱动类对象
         9         |-Connection getConnection(url,user,password);  获取连接对象
        10 
        11     |- Connection接口: 表示java程序和数据库的连接对象。
        12             |- Statement createStatement() : 创建Statement对象
        13             |- PreparedStatement prepareStatement(String sql)  创建PreparedStatement对象
        14             |- CallableStatement prepareCall(String sql) 创建CallableStatement对象
        15 
        16     |- Statement接口: 用于执行静态的sql语句
        17             |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML)
        18             |- ResultSet executeQuery(String sql)  :执行的静态的查询sql语句(DQL)
        19 
        20         |-PreparedStatement接口:用于执行预编译sql语句
        21                 |- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
        22                 |-ResultSet executeQuery()  : 执行预编译的查询sql语句(DQL)
        23 
        24         |-CallableStatement接口:用于执行存储过程的sql语句(call xxx)
        25                     |-ResultSet executeQuery()  : 调用存储过程的方法
        26 
        27 
        28     |- ResultSet接口:用于封装查询出来的数据
        29             |- boolean next() : 将光标移动到下一行
        30             |-getXX() : 获取列的值

        五:常见的SQL执行语句 

      •  1 String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";
         2 //发送sql语句,执行sql语句,得到返回结果
         3 int count = stmt.executeUpdate(sql);
         4 
         5 String sql = "SELECT * FROM student";
         6 //执行sql
         7 ResultSet rs = stmt.executeQuery(sql);
         8 
         9 String sql = "INSERT INTO student(NAME,gender) VALUES('李四','女')";
        10 int count = stmt.executeUpdate(sql);
        11 
        12 String sql = "UPDATE student SET NAME='"+name+"' WHERE id="+id+"";
        13 
        14 String sql = "DELETE FROM student WHERE id="+id+"";

        六:补充

        数据库url制定

        当加载的驱动程序,可以建立程序中使用DriverManager.getConnection()方法的连接。为方便参考,让列出了三个重载DriverManager.getConnection()方法:

        getConnection(String url)

        getConnection(String url, Properties prop)

        getConnection(String url, String user, String password)

        在这里,每个表单需要一个数据库URL。数据库的URL是指向数据库地址。

        制定一个数据库URL是大多数用在建立连接相关。 
        如图列出了下来流行的JDBC驱动程序名和数据库的URL。 
        这里写图片描述

        参考资料

        http://www.yiibai.com/jdbc/jdbc-sample-code.html#

  • 相关阅读:
    [Python学习]Iterator 和 Generator的学习心得
    ubantu linux的bash shell初接触
    Linux-Ubuntu 启用root账户
    Ubuntu Linux系统三种方法添加本地软件库
    ASK,OOK,FSK的联系和区别
    spinlock一边连逻辑一边连控制器
    Cgroup与LXC简介
    关于 package.json 和 package-lock.json 文件说明
    ng build --aot 与 ng build --prod
    【Rxjs】
  • 原文地址:https://www.cnblogs.com/cheese320/p/8487628.html
Copyright © 2011-2022 走看看