java連接mysql底層封裝詳解
本文實(shí)例為大家分享了java連接mysql底層封裝代碼,供大家參考,具體內(nèi)容如下
連接數(shù)據(jù)庫(kù)
package com.dao.db; import java.sql.Connection; import java.sql.SQLException; /** * 數(shù)據(jù)庫(kù)連接層MYSQL * @author Administrator * */ public class DBConnection { /** * 連接數(shù)據(jù)庫(kù) * @return */ public static Connection getDBConnection() { // 1. 注冊(cè)驅(qū)動(dòng) try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 獲取數(shù)據(jù)庫(kù)的連接 try { Connection conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=utf-8", "root", "root"); return conn; } catch (SQLException e1) { e1.printStackTrace(); } return null; } }
數(shù)據(jù)層封裝
package com.dao.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.HashMap; /** * MYSQL數(shù)據(jù)庫(kù)底層封裝 * @author Administrator * */ public class DBManager { private PreparedStatement pstmt; private Connection conn; private ResultSet rs; /** * 打開(kāi)數(shù)據(jù)庫(kù) */ public DBManager() { conn = DBConnection.getDBConnection(); } /** * 執(zhí)行修改添加操作 * @param coulmn * @param type * @param sql * @return * @throws SQLException */ public boolean updateOrAdd(String[] coulmn, int[] type, String sql) throws SQLException { if(!setPstmtParam(coulmn, type, sql)) return false; boolean flag = pstmt.executeUpdate()>0?true:false; closeDB(); return flag; } /** * 獲取查詢結(jié)果集 * @param coulmn * @param type * @param sql * @throws SQLException */ public DataTable getResultData(String[] coulmn, int[] type, String sql) throws SQLException { DataTable dt = new DataTable(); ArrayList<HashMap<String, String>>list = new ArrayList<HashMap<String, String>>(); if(!setPstmtParam(coulmn, type, sql)) return null; rs = pstmt.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData();//取數(shù)據(jù)庫(kù)的列名 int numberOfColumns = rsmd.getColumnCount(); while(rs.next()) { HashMap<String, String> rsTree = new HashMap<String, String>(); for(int r=1;r<numberOfColumns+1;r++) { rsTree.put(rsmd.getColumnName(r),rs.getObject(r).toString()); } list.add(rsTree); } closeDB(); dt.setDataTable(list); return dt; } /** * 參數(shù)設(shè)置 * @param coulmn * @param type * @throws SQLException * @throws NumberFormatException */ private boolean setPstmtParam(String[] coulmn, int[] type, String sql) throws NumberFormatException, SQLException { if(sql== null) return false; pstmt = conn.prepareStatement(sql); if(coulmn != null && type != null && coulmn.length !=0 && type.length !=0 ) { for (int i = 0; i<type.length; i++) { switch (type[i]) { case Types.INTEGER: pstmt.setInt(i+1, Integer.parseInt(coulmn[i])); break; case Types.BOOLEAN: pstmt.setBoolean(i+1, Boolean.parseBoolean(coulmn[i])); break; case Types.CHAR: pstmt.setString(i+1, coulmn[i]); break; case Types.DOUBLE: pstmt.setDouble(i+1, Double.parseDouble(coulmn[i])); break; case Types.FLOAT: pstmt.setFloat(i+1, Float.parseFloat(coulmn[i])); break; default: break; } } } return true; } /** * 關(guān)閉數(shù)據(jù)庫(kù) * @throws SQLException */ private void closeDB() throws SQLException { if(rs != null) { rs.close(); } if(pstmt != null) { pstmt.close(); } if(conn != null) { conn.close(); } } }
數(shù)據(jù)集封裝
package com.dao.db; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * 數(shù)據(jù)集封裝 * @author Administrator * */ public class DataTable { public String[] column;//列字段 public String[][] row; //行值 public int rowCount = 0;//行數(shù) public int colCoun = 0;//列數(shù) public DataTable() { super(); } public DataTable(String[] column, String[][] row, int rowCount, int colCoun) { super(); this.column = column; this.row = row; this.rowCount = rowCount; this.colCoun = colCoun; } public void setDataTable(ArrayList<HashMap<String, String>> list) { rowCount = list.size(); colCoun = list.get(0).size(); column = new String[colCoun]; row = new String[rowCount][colCoun]; for (int i = 0; i < rowCount; i++) { Set<Map.Entry<String, String>> set = list.get(i).entrySet(); int j = 0; for (Iterator<Map.Entry<String, String>> it = set.iterator(); it .hasNext();) { Map.Entry<String, String> entry = (Map.Entry<String, String>) it .next(); row[i][j] = entry.getValue(); if (i == rowCount - 1) { column[j] = entry.getKey(); } j++; } } } public String[] getColumn() { return column; } public void setColumn(String[] column) { this.column = column; } public String[][] getRow() { return row; } public void setRow(String[][] row) { this.row = row; } public int getRowCount() { return rowCount; } public void setRowCount(int rowCount) { this.rowCount = rowCount; } public int getColCoun() { return colCoun; } public void setColCoun(int colCoun) { this.colCoun = colCoun; } }
測(cè)試Demo
package com.bussiness.test; import java.sql.SQLException; import java.sql.Types; import com.dao.db.DBManager; import com.dao.db.DataTable; public class TestBusIness{ static String searchSql = "select * from score"; static String insertSql = "insert into score(name, age, score)values(?,?,?)"; static String deleteSql = "delete from score where id = ?"; static String updateSql = "update score set name = ? where id = ?"; public static void main(String[] args) { intsertData(); searchData(); } private static void intsertData() { DBManager dm = new DBManager(); String[] coulmn = new String[]{"wyf2", "23", "89.5"}; int[] type = new int[]{Types.CHAR, Types.INTEGER, Types.DOUBLE}; try { boolean flag = dm.updateOrAdd(coulmn, type, insertSql); if(flag) System.out.println("插入成功"); } catch (SQLException e) { e.printStackTrace(); } } private static void searchData() { DBManager dm = new DBManager(); String[] coulmn = null; int[] type = null; try { DataTable dt = dm.getResultData(coulmn, type, searchSql); if(dt != null && dt.getRowCount()> 0){ for(int i = 0; i<dt.getRowCount(); i++) { for(int j = 0; j<dt.getColCoun(); j++) System.out.printf(dt.getRow()[i][j]+"\t"); System.out.println(); } } else System.out.println("查詢失敗"); } catch (SQLException e) { e.printStackTrace(); } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql復(fù)合主鍵和聯(lián)合主鍵的區(qū)別解析
這篇文章主要介紹了Mysql復(fù)合主鍵和聯(lián)合主鍵的區(qū)別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解

MySQL之解決字符串?dāng)?shù)字的排序失效問(wèn)題

Mysql動(dòng)態(tài)更新數(shù)據(jù)庫(kù)腳本的示例講解

mysql8.0.11 winx64安裝配置方法圖文教程(win10)