java连接mysql底层封装详解

作者:FC WORLD!!! 时间:2024-01-26 17:31:19 

本文实例为大家分享了java连接mysql底层封装代码,供大家参考,具体内容如下

连接数据库


package com.dao.db;

import java.sql.Connection;
import java.sql.SQLException;

/**
* 数据库连接层MYSQL
* @author Administrator
*
*/
public class DBConnection {

/**
 * 连接数据库
 * @return
 */
public static Connection getDBConnection()
{
 // 1. 注册驱动
 try {
  Class.forName("com.mysql.jdbc.Driver");
 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 // 获取数据库的连接
 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;
}

}

数据层封装


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数据库底层封装
* @author Administrator
*
*/
public class DBManager {

private PreparedStatement pstmt;
private Connection conn;
private ResultSet rs;

/**
 * 打开数据库
 */
public DBManager() {
 conn = DBConnection.getDBConnection();
}

/**
 * 执行修改添加操作
 * @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;
}
/**
 * 获取查询结果集
 * @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();//取数据库的列名
 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;
}

/**
 * 参数设置
 * @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;
}

/**
 * 关闭数据库
 * @throws SQLException
 */
private void closeDB() throws SQLException
{
 if(rs != null)
 {
  rs.close();
 }
 if(pstmt != null)
 {
  pstmt.close();
 }
 if(conn != null)
 {
  conn.close();
 }

}
}

数据集封装


package com.dao.db;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
* 数据集封装
* @author Administrator
*
*/
public class DataTable {

public String[] column;//列字段
public String[][] row; //行值
public int rowCount = 0;//行数
public int colCoun = 0;//列数

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;
}

}

测试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();
 }
}
}

来源:https://www.cnblogs.com/FCWORLD/p/3401622.html

标签:java,mysql
0
投稿

猜你喜欢

  • Python实现多线程抓取妹子图

    2022-10-02 15:39:25
  • python自动翻译实现方法

    2022-01-01 08:03:31
  • php防止sql注入代码实例

    2023-08-15 21:17:21
  • CSS灵活运行注释带来的益处

    2008-04-21 13:51:00
  • python3实现小球转动抽奖小游戏

    2021-08-07 01:08:04
  • 简述python四种分词工具,盘点哪个更好用?

    2021-08-22 23:28:01
  • python GUI库图形界面开发之PyQt5开发环境配置与基础使用

    2023-11-16 04:45:22
  • 轻松接触MaxDB和MySQL之间的协同性

    2008-11-27 16:25:00
  • Python+Appium自动化操作微信的教程分享

    2023-01-06 09:18:09
  • ASP下标越界错误的解决方法

    2008-10-19 17:39:00
  • Python SVM(支持向量机)实现方法完整示例

    2021-06-09 14:20:34
  • Mysql数据库按时间点恢复实战记录

    2024-01-16 22:37:56
  • 【MongoDB for Java】Java操作MongoDB数据库

    2023-07-14 01:10:43
  • JavaScript事件委托技术实例分析

    2023-07-01 01:18:23
  • SqlServer异常处理常用步骤

    2024-01-26 01:56:32
  • ASP生成静态网页的方法

    2008-02-18 19:20:00
  • 常用ASCII 码对照表

    2007-08-21 14:35:00
  • Vue表单之v-model绑定下拉列表功能

    2024-05-13 09:07:07
  • Python之时间和日期使用小结

    2021-01-11 09:33:21
  • 常用的数据库访问方式是什么?

    2009-11-01 15:08:00
  • asp之家 网络编程 m.aspxhome.com