1. 程式人生 > 其它 >Java基礎之原生JDBC操作資料庫

Java基礎之原生JDBC操作資料庫

  前言

  日常開發中,我們都習慣了使用ORM框架來幫我們操作資料庫,本文複習、記錄Java如何使用原生JDBC操作資料庫

  程式碼編寫

  封裝幾個簡單方法

    find查詢方法

    findOne查詢方法

    update執行方法

package cn.huanzi.qch.util;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * 原生jdbc操作資料庫工具類
 */
public class jdbcUtil {

    //資料庫連線:地址、使用者名稱、密碼
private final String url; private final String username; private final String password; public jdbcUtil(String url,String username,String password){ this.url = url; this.username = username; this.password = password; } public jdbcUtil(String url,String username,String password,String driver){
this.url = url; this.username = username; this.password = password; try { /* 同時需要引入相關驅動依賴 1、MySQL: com.mysql.cj.jdbc.Driver 2、Oracle: oracle.jdbc.driver.OracleDriver 3、pgsql: org.postgresql.Driver
*/ //載入驅動 Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 獲取 Connection 連線 */ private Connection getConnection() { Connection conn = null; try { conn= DriverManager.getConnection(url, username, password); conn.setAutoCommit(true); } catch (SQLException e) { System.err.println("獲取Connection連線異常..."); e.printStackTrace(); } return conn; } /** * 關閉 Connection 連線 */ private void close(Connection conn){ try { conn.close(); } catch (SQLException e) { System.err.println("關閉Connection連線異常..."); e.printStackTrace(); } } /** * 查詢 */ public ArrayList<HashMap<String,Object>> find(String sql, Object[] params) { ArrayList<HashMap<String, Object>> list = new ArrayList<>(); //獲取連線 Connection conn = getConnection(); PreparedStatement ps; ResultSet rs; try { //設定SQL、以及引數 ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } //執行查詢 rs = ps.executeQuery(); //獲取查詢結果 ResultSetMetaData rm = rs.getMetaData(); int columnCount = rm.getColumnCount(); //封裝結果集 while (rs.next()) { HashMap<String, Object> map = new HashMap<>(columnCount); for (int i = 1; i <= columnCount; i++) { String name = rm.getColumnName(i).toLowerCase(); Object value = rs.getObject(i); map.put(name,value); } list.add(map); } //關閉連線 close(conn); } catch (Exception e) { System.err.println("執行 jdbcUtil.find() 異常..."); e.printStackTrace(); } return list; } public HashMap<String,Object> findOne(String sql, Object[] params){ ArrayList<HashMap<String, Object>> list = find(sql, params); return list.size() > 0 ? list.get(0) : null; } /** * 更新 */ private boolean update(String sql, Object[] params){ boolean flag = false; //獲取連線 Connection conn = getConnection(); PreparedStatement ps; try { //設定SQL、以及引數 ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } //執行 flag = ps.execute(); } catch (SQLException e) { System.err.println("執行 jdbcUtil.update() 異常..."); e.printStackTrace(); } //關閉連線 close(conn); return flag; } }

  效果

  執行main函式

    public static void main(String[] args) {
        //獲取連線
        jdbcUtil jdbcUtil = new jdbcUtil("jdbc:mysql://localhost/jfinal_demo","root","123456");

        // find查詢
        ArrayList<HashMap<String, Object>> list = jdbcUtil.find("select * from user", null);
        for (HashMap<String, Object> map : list) {
            System.out.println(map);
        }

        System.out.println("----------------------------");

        //update執行、findOne查詢
        jdbcUtil.update("delete from user where user_id = ?", new Object[]{"4"});
        jdbcUtil.update("insert into user values (?,?)", new Object[]{"4","王麻子"});
        jdbcUtil.update("update user set user_name = ? where user_id = ?", new Object[]{"王麻子子","4"});

        HashMap<String, Object> map = jdbcUtil.findOne("select * from user where user_id = ?", new Object[]{"4"});
        System.out.println(map);
    }

  後記

  原生JDBC操作資料庫暫時先記錄到這,後續再進行補充

版權宣告

作者:huanzi-qch 出處:https://www.cnblogs.com/huanzi-qch 若標題中有“轉載”字樣,則本文版權歸原作者所有。若無轉載字樣,本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利.

AD廣告位(長期招租,如有需要請私信)

【基塔後臺】免費後臺管理系統,低程式碼快速搭建管理後臺

【騰訊雲】雲產品限時秒殺,爆款1核2G雲伺服器,首年74元!
【騰訊雲】境外1核2G伺服器低至2折,半價續費券限量免費領取!
【騰訊雲】星星海SA2雲伺服器,1核2G首年99元起,高性價比首選!
【騰訊雲】中小企業福利專場,多款剛需產品,滿足企業通用場景需求,雲伺服器2.5折起!

【阿里雲】新老使用者同享,上雲優化聚集地!
【阿里雲】最新活動頁,上新必買搶先知,勁爆優惠不錯過!
【阿里雲】輕量應用伺服器2核2G 低至60元/年起!香港與海外伺服器最低24元/月起!
【阿里雲】ECS例項升級、續費,享低至 6.3折 限時折扣!

捐獻、打賞

請注意:作者五行缺錢,如果喜歡這篇文章,請隨意打賞!

支付寶

微信


QQ群交流群

QQ群交流群
有事請加群,有問題進群大家一起交流!