博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC的封装
阅读量:6680 次
发布时间:2019-06-25

本文共 6068 字,大约阅读时间需要 20 分钟。

 

连接数据库的步骤:

1.加载JDBC驱动

2.提供连接参数

3.建立数据库连接

4.创建一个statement

5.执行SQL语句

6.处理结果

7.关闭JDBC对象

 

 

新建一个JDBCUtil类

package com.jdbc.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class JDBCUtil{    private final String USERNAME = "root"; //用户名    private final String PASSWORD = "a123"; //密码    private final String DRIVER = "com.mysql.jdbc.Driver"; //需要加载的驱动    private final String URL = "jdbc:mysql://localhost:3306/test"; //访问数据库的url    private Connection connection; //数据库连接    private PreparedStatement preparedStatement;//定义sql语句的执行对象    private ResultSet resultSet; //查询返回的结果集合}

 

在构造函数中注册驱动:

public JDBCUtil()    {        try        {            Class.forName(DRIVER); //注册驱动            System.out.println("注册成功");        } catch (Exception e)        {            e.printStackTrace();        }    }

获取连接:

public Connection getConnection()    {        try        {            //获取连接            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);        } catch (Exception e)        {            // TODO: handle exception        }        return connection;    }

执行更新语句:

//执行更新语句    public boolean updateByPreparedStatement(String sql, List params)            throws SQLException    {        //获取sql执行对象        preparedStatement = connection.prepareStatement(sql);        //填充sql中的占位符        if (params != null && !params.isEmpty())        {            for (int i = 0; i < params.size(); ++i)            {                preparedStatement.setObject(i + 1, params.get(i));            }        }                //执行update        int result = preparedStatement.executeUpdate();        return result > 0;    }

查询单条结果:

//查询单条结果    public Map
findSimpleResult(String sql, List
params) throws SQLException { //map对应一条结果 Map
map = new HashMap
(); //填充占位符 preparedStatement = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); ++i) { preparedStatement.setObject(i + 1, params.get(i)); } } //执行sql语句 resultSet = preparedStatement.executeQuery(); //获取列的信息 ResultSetMetaData metaData = resultSet.getMetaData(); //获取列的个数 int colLen = metaData.getColumnCount(); while (resultSet.next()) { //依次取出每列,放入map中 for (int i = 0; i < colLen; ++i) { //获取列名 String colsName = metaData.getColumnName(i + 1); //获取该列的value Object colsValue = resultSet.getObject(colsName); if (colsValue == null) { colsValue = ""; } //将该列放入map map.put(colsName, colsValue); } } return map; }

查询多条结果:

public List
> findMoreResult(String sql, List
params) throws SQLException { //每个map对应一行数据 List
> list = new ArrayList
>(); preparedStatement = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); ++i) { preparedStatement.setObject(i + 1, params.get(i)); } } resultSet = preparedStatement.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int colLen = metaData.getColumnCount(); //逐行进行遍历 while (resultSet.next()) { Map
map = new HashMap
(); for (int i = 0; i < colLen; ++i) { String colsName = metaData.getColumnName(i + 1); Object colsValue = resultSet.getObject(colsName); if (colsValue == null) { colsValue = ""; } map.put(colsName, colsValue); } list.add(map); } return list; }

释放连接:

//释放连接    public void releaseConn()    {        if (resultSet != null)        {            try            {                resultSet.close();            } catch (Exception e)            {                // TODO: handle exception                e.printStackTrace();            }        }        if (preparedStatement != null)        {            try            {                preparedStatement.close();            } catch (Exception e)            {                // TODO: handle exception                e.printStackTrace();            }        }        if (connection != null)        {            try            {                connection.close();            } catch (Exception e)            {                // TODO: handle exception                e.printStackTrace();            }        }    }

 

 

测试代码如下:

public static void main(String[] args)    {        JDBCUtil jdbcUtil = new JDBCUtil();        jdbcUtil.getConnection();        String sql = "insert into person(name, age) values(?, ?)";        List params = new ArrayList();        params.add("rose");        params.add(123);        try        {            boolean flag = jdbcUtil.updateByPreparedStatement(sql, params);            System.out.println(flag);        } catch (Exception e)        {            // TODO: handle exception            e.printStackTrace();        }        sql = "select * from person where id = 1";        try        {            Map
map = jdbcUtil.findSimpleResult(sql, null); System.out.println(map); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println("--------------------------"); sql = "select * from person"; try { List
> list = jdbcUtil.findMoreResult(sql, null); System.out.println(list); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }

 

 

后面改动Java的反射特性改写查找函数.

转载于:https://www.cnblogs.com/inevermore/p/3999296.html

你可能感兴趣的文章
阿里云云服务器硬盘分区及挂载
查看>>
StratoIO WebPrinter如何引入外部JS?StratoIO WebPrinter控件常见的问题
查看>>
【JEECG技术文档】Redis与Eache切换文档
查看>>
网卡配置文件
查看>>
继承性
查看>>
static静态关键字
查看>>
jQuery事件
查看>>
zookeeper
查看>>
tar.gz tar.bz2解压
查看>>
19-思科防火墙:ASA静态NAT
查看>>
打造零售数据中台 数澜助百果园数字化转型
查看>>
YOLOv3目标检测实战:交通标志识别
查看>>
用 Python 进行微信公众号开发
查看>>
SpringMVC 扫描引用第三方包,以及打包的问题
查看>>
Linux大文件下载
查看>>
GlusterFS分布式存储系统
查看>>
C、C++控制台程序、Windows API程序、MFC程序理解与比较
查看>>
纷争再起:Flutter-UI绘制解析
查看>>
JVM故障分析排障用到的一些命令和工具
查看>>
查看 UUID
查看>>