zoukankan      html  css  js  c++  java
  • 【Java】+操作数据库

    一、操作MySQL数据库

    已封装好 可直接导入使用

      1 import org.testng.annotations.Test;
      2 
      3 import java.sql.*;
      4 import java.util.ArrayList;
      5 import java.util.List;
      6 
      7 /**
      8  * @author 
      9  * @version 1.0
     10  * @time 2020/1/6 16:30
     11  */
     12 public class Data {
     13     // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
     14     static private String JDBC_DRIVER = "com.mysql.jdbc.Driver";
     15     static private String DB_URL = "jdbc:mysql://数据库IP:3306/库";
     16 
     17     // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
     18 //    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
     19 //    static final String DB_URL = "jdbc:mysql://数据库IP:3306/RUNOOB?useSSL=false&serverTimezone=UTC";
     20 
     21     // 数据库的用户名与密码,需要根据自己的设置
     22     static private String USER = "账号";
     23     static private String PASS = "密码";
     24 
     25     /**
     26      * 更新数据(增、删、改)
     27      *
     28      * @param updatesSql sql语句
     29      */
     30     public static void dataUpdate(List<String> updatesSql) {
     31         Connection conn = null;
     32         Statement stmt = null;
     33         try {
     34             // step1 注册 JDBC 驱动
     35             Class.forName(JDBC_DRIVER);
     36 
     37             // step2 连接数据库 返回一个指针 用于操作数据库
     38             conn = DriverManager.getConnection(DB_URL, USER, PASS);
     39 
     40             // step3 创建一个实例化对象 返回一个对象指针 用于执行sql语句
     41             stmt = conn.createStatement();
     42 
     43             // step4 执行sql语句
     44             String sql = "";
     45             int rs = 0;
     46             for (int i = 0; i < updatesSql.size(); i++) {
     47                 sql = updatesSql.get(i);
     48                 rs = stmt.executeUpdate(sql);
     49                 System.out.println(String.format("执行第 %s 条sql:%s", i + 1, sql));
     50             }
     51 
     52             // step5 关闭所有指针
     53             stmt.close();
     54             conn.close();
     55         } catch (SQLException se) {
     56             // 处理 JDBC 错误
     57             se.printStackTrace();
     58         } catch (Exception e) {
     59             // 处理 Class.forName 错误
     60             e.printStackTrace();
     61         } finally {
     62             // 关闭资源
     63             try {
     64                 if (stmt != null) stmt.close();
     65             } catch (SQLException se2) {
     66             }// 什么都不做
     67             try {
     68                 if (conn != null) conn.close();
     69             } catch (SQLException se) {
     70                 se.printStackTrace();
     71             }
     72         }
     73         System.out.println("Goodbye!");
     74     }
     75 
     76     /**
     77      * 查询数据(查)
     78      *
     79      * @param searchSql sql语句
     80      * @return 返回查询后的结果(每一行、每一列)
     81      */
     82     public static List<ArrayList> dataSearch(String searchSql) {
     83         List<ArrayList> resultList = new ArrayList<>();
     84 
     85         Connection conn = null;
     86         Statement stmt = null;
     87         try {
     88             // step1 注册 JDBC 驱动
     89             Class.forName(JDBC_DRIVER);
     90 
     91             // step2 连接数据库 返回一个指针 用于操作数据库
     92             conn = DriverManager.getConnection(DB_URL, USER, PASS);
     93 
     94             // step3 创建一个实例化对象 返回一个对象指针 用于执行sql语句
     95             stmt = conn.createStatement();
     96 
     97             // step4 执行sql语句
     98             String sql = searchSql;
     99             ResultSet resultSet = stmt.executeQuery(sql);
    100             System.out.println(String.format("查询后的结果总列数:%s", resultSet.getMetaData().getColumnCount()));
    101             int columnCount = resultSet.getMetaData().getColumnCount();
    102             System.out.println(String.format("查询后的结果总列数:%s", columnCount));
    103 
    104             while (resultSet.next()) {
    105                 System.out.println(resultSet.getObject(1));
    106                 ArrayList result = new ArrayList();
    107                 // 组装一行数据
    108                 for (int i = 0; i < columnCount; i++) {
    109                     result.add(resultSet.getObject(i + 1));
    110                 }
    111                 resultList.add(result);
    112 
    113             }
    114 
    115             // step5 关闭所有指针
    116             stmt.close();
    117             conn.close();
    118         } catch (SQLException se) {
    119             // 处理 JDBC 错误
    120             se.printStackTrace();
    121         } catch (Exception e) {
    122             // 处理 Class.forName 错误
    123             e.printStackTrace();
    124         } finally {
    125             // 关闭资源
    126             try {
    127                 if (stmt != null) stmt.close();
    128             } catch (SQLException se2) {
    129             }// 什么都不做
    130             try {
    131                 if (conn != null) conn.close();
    132             } catch (SQLException se) {
    133                 se.printStackTrace();
    134             }
    135         }
    136         System.out.println("Goodbye!");
    137 
    138         return resultList;
    139     }
    140 
    141     @Test
    142     public void test() {
    143         String sql = "sql查询语句";
    144         List<ArrayList> arrayLists = dataSearch(sql);
    145         for (int i = 0; i < arrayLists.size(); i++) {
    146             System.out.println(String.format("第%s行数据:%s", i, arrayLists.get(i)));
    147         }
    148     }
    149 }
  • 相关阅读:
    Linux常用命令
    Linux静态函数库与动态函数库
    解决MySQL5.7的表无法插入中文的问题
    MySQL与postgreSQL在left join查询时的区别
    《刻意练习》读书笔记
    在Golang中实现与Python装饰器类似功能的方法
    项目中使用进程内缓存的一些经验及注意事项
    Golang中使用recover捕获panic的操作及遇到的一个坑
    Python与Golang中给列表中字典按照某个key排序的实现
    浅谈Python与Golang中的“延迟绑定机制”
  • 原文地址:https://www.cnblogs.com/danhuai/p/12160224.html
Copyright © 2011-2022 走看看