zoukankan      html  css  js  c++  java
  • JavaSE基础之JDBC

    JavaSE基础之JDBC

    1、JDBC 的步骤:

      ①加载数据库驱动;

        a.MySQL:com.mysql.jdbc.Driver;

        b.SQLServer:com.microsoft.jdbc.sqlserver.SQLServerDriver;

        c.Oracle:oracle.jdbc.driver.OracleDriver;

      ②获取数据库链接;

          a.MySQL:jdbc:mysql://localhost:3306/DataBaseName;

        b.SQLServer:jdbc:sqlserver://localhost:1433; DatabaseName=DataBaseName

        c.Oracle:jdbc:oracle:thin:@localhost:1521:orcl;

      ③创建SQL语句对象;

      ④执行SQL语句对象;  

        a.如果是insert、delete、update,则返回 int;

        b.如果是query,则返回ResultSet,需要封装结果集。

      ⑤关闭数据库资源。

    2、JDBC 的工具类(以链接MySQL为例):DBUtil.java

      1 package cn.com.zfc.util;
      2 
      3 import java.sql.Connection;
      4 import java.sql.DriverManager;
      5 import java.sql.PreparedStatement;
      6 import java.sql.ResultSet;
      7 import java.sql.ResultSetMetaData;
      8 import java.sql.SQLException;
      9 import java.util.ArrayList;
     10 import java.util.HashMap;
     11 import java.util.List;
     12 import java.util.Map;
     13 
     14 /**
     15 * 
     16 * @title DbUtil
     17 * @describe 连接数据库的帮助类:链接 MySQL 数据库
     18 * @author 张富昌
     19 * @date 2016年8月23日上午9:52:44
     20 */
     21 public class DbUtil {
     22   /* 数据库链接的 URL,数据库名称可随意更改 */
     23   private final static String URL = "jdbc:mysql://localhost:3306/library";
     24   /* 数据库用户名 */
     25   private final static String USERNAME = "root";
     26   /* 数据库密码 */
     27   private final static String PASSWORD = "root";
     28   /* 数据库链接对象 */
     29   private Connection connection = null;
     30   /* 预处理语句对象,相同的 sql 语句只编译一次 */
     31   private PreparedStatement preparedStatement = null;
     32   /* 结果集对象,用于存储查询的数据 */
     33   private ResultSet resultSet = null;
     34   /* 结果集结构化对象,用于对结果集的处理,方便获取数据 */
     35   private ResultSetMetaData resultSetMetaData = null;
     36 
     37   /**
     38   * 
     39   * 功能:1、加载数据库驱动包
     40   *
     41   */
     42   static {
     43     try {
     44       // 需要加载数据库的驱动
     45       Class.forName("com.mysql.jdbc.Driver");
     46     } catch (ClassNotFoundException e) {
     47       System.out.println("加载数据库驱动包出现了异常...");
     48       e.printStackTrace();
     49     }
     50   }
     51 
     52   /**
     53   * 
     54   * 功能:2、获取数据库链接
     55   *
     56   * 参数:
     57   *
     58   * 返回类型:Connection
     59   */
     60   private Connection getConnection() {
     61     try {
     62       connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
     63       return connection;
     64     } catch (SQLException e) {
     65       System.out.println("获取链接出现了异常");
     66       e.printStackTrace();
     67     }
     68     return null;
     69   }
     70 
     71   /**
     72   * 
     73   * 功能:3、提供更新的方法,包括(添加、修改、删除)
     74   *
     75   * 参数: String sql, Object... objects
     76   *
     77   * 返回类型:int
     78   */
     79   public int update(String sql, Object... objects) {
     80     // 1、创建数据库链接对象
     81     connection = getConnection();
     82 
     83     // 2、创建预处理语句对象
     84     try {
     85       preparedStatement = connection.prepareStatement(sql);
     86 
     87       // 3、遍历参数 Object,代替 SQL 语句中的占位符(如果有)
     88       for (int i = 0; i < objects.length; i++) {
     89         preparedStatement.setObject(i + 1, objects[i]);
     90       }
     91 
     92       // 4、执行 sql 语句
     93       return preparedStatement.executeUpdate();
     94     } catch (SQLException e) {
     95       System.out.println("创建预处理语句对象出现了异常...");
     96       e.printStackTrace();
     97     } finally {
     98       // 5、关闭数据库资源
     99       release();
    100     }
    101     return -1;
    102 
    103   }
    104 
    105   /**
    106   * 
    107   * 功能:4、查询数据库中的信息
    108   *
    109   * 参数:String sql, Object... objects
    110   *
    111   * 返回类型:List<Map<String,Object>>
    112   */
    113   public List<Map<String, Object>> query(String sql, Object... objects) {
    114     List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    115     // 1、创建数据库链接对象
    116     connection = getConnection();
    117 
    118     // 2、创建预处理语句对象
    119     try {
    120       preparedStatement = connection.prepareStatement(sql);
    121 
    122       // 3、遍历参数 Object
    123       for (int i = 0; i < objects.length; i++) {
    124         preparedStatement.setObject(i + 1, objects[i]);
    125        }
    126       // 4、执行 SQL 语句,创建结果集对象
    127       resultSet = preparedStatement.executeQuery();
    128 
    129       // 5、创建结果集结构化对象
    130       resultSetMetaData = resultSet.getMetaData();
    131 
    132       // 6、遍历结果集,把存储数据类型转化为 List<Map<String, Object>>
    133       while (resultSet.next()) {
    134         Map<String, Object> map = new HashMap<String, Object>();
    135         for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
    136           String key = resultSetMetaData.getColumnName(i);
    137           Object value = resultSet.getObject(key);
    138           // 封装结果集
    139           map.put(key, value);
    140         }
    141         list.add(map);
    142       }
    143       return list;
    144     } catch (SQLException e) {
    145       System.out.println("创建预处理语句对象出现了异常...");
    146       e.printStackTrace();
    147     } finally {
    148       // 7、关闭数据库资源
    149       release();
    150     }
    151 
    152     return null;
    153   }
    154 
    155   /**
    156   * 
    157   * 功能:5、关闭数据库资源,很重要
    158   *
    159   * 参数:
    160   *
    161   * 返回类型:void
    162   */
    163   private void release() {
    164     // 1、关闭数据库链接对象
    165     if (connection != null) {
    166       try {
    167         connection.close();
    168       } catch (SQLException e) {
    169         System.out.println("关闭数据库链接对象出现了异常...");
    170         e.printStackTrace();
    171       }
    172     }
    173     // 2、关闭预处理语句对象
    174     if (preparedStatement != null) {
    175       try {
    176         preparedStatement.close();
    177       } catch (SQLException e) {
    178         System.out.println("关闭预处理语句对象出现了异常...");
    179         e.printStackTrace();
    180       }
    181     }
    182 
    183     // 3、关闭结果集对象
    184     if (resultSet != null) {
    185       try {
    186         resultSet.close();
    187       } catch (SQLException e) {
    188         e.printStackTrace();
    189       }
    190     }
    191   }
    192 
    193 }
  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/zfc-java/p/6670941.html
Copyright © 2011-2022 走看看