封装jdbc、DBUtil
package com.cmos.util; import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; /**
* 数据库连接工具类
*
* @author Wx
*
*/
public class JDBCUtil {
private static Properties ps = new Properties();
static {
// 读入配置文件
InputStream is = JDBCUtil.class.getResourceAsStream("jdbc.properties");
try {
ps.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 建立连接方法
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
Connection conn = null;
if (conn == null) {
//加载驱动
Class.forName(ps.getProperty("driver"));
conn = DriverManager.getConnection(ps.getProperty("url"), ps.getProperty("username"),
ps.getProperty("password"));
return conn;
} else {
return conn;
}
} /**
* 关闭连接
* @param conn
* @param pre
* @param rs
*/
public static void close(Connection conn, PreparedStatement pre, ResultSet rs) {
if (rs != null)
try {
rs.close();
} catch (SQLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
if (pre != null)
try {
pre.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/**
* 关闭连接方法
* @param conn
* @param pre
*/
public static void close(Connection conn, PreparedStatement pre) {
if (pre != null)
try {
pre.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
JDBC-util 封装了jdbc并封装dbutil方法,查询直接返回List<map<String,Object>>,将一大堆代码放在一块是真的不好看
代码如下:
DButil
package com.cmos.util; import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class DBUtil {
private static Connection conn = null;
private static PreparedStatement pstmt = null;
private static ResultSet rs = null; /**
* 增删改操作
* @param sql
* @param paramsValue
* @return
*/
public static int execute(String sql, Object[] paramsValue) {
int result = 0;
try {
// 1. 数据库连接
conn = JDBCUtil.getConnection();
// 2. 获取PreparedStatement
pstmt = conn.prepareStatement(sql);
// 3. 得到参数元数据个数
int count = pstmt.getParameterMetaData().getParameterCount();
// 4. 利用参数元数据给SQL语句的占位符需要的参数赋值
if (paramsValue != null && paramsValue.length > 0) {
for (int i = 0; i < count; i++) {
// 循环结束,可以给SQL语句完整赋值
pstmt.setObject(i + 1, paramsValue[i]);
}
}
// 5. 执行
result = pstmt.executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JDBCUtil.close(conn, pstmt);
}
return result;
} /**
* 查询操作
* @param sql
* @param params
* @return
*/
public static List<Map<String, Object>> executeQuery(String sql, Object[] params) {
List<Map<String, Object>> list = new ArrayList<>();
try {
conn = JDBCUtil.getConnection();
pstmt = conn.prepareStatement(sql);
// 设置参数
if (params != null) {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
}
rs = pstmt.executeQuery();
// 得到ResultSetMetaData对象,这个对象包括列的信息(列的名称和类型等等)
ResultSetMetaData metaData = rs.getMetaData();
// 得到结果集中列的个数
int columnCount = metaData.getColumnCount();
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= columnCount; i++) {
// 得到指定的列名的别名
String name = metaData.getColumnLabel(i);
Object value = rs.getObject(i);
map.put(name, value);
}
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.close(conn, pstmt, rs);
}
return list;
} }
封装jdbc、DBUtil的更多相关文章
- JDBC_13_封装JDBC工具类
封装JDBC工具类 代码: import java.sql.*; /** * JDBC工具类,简化JDBC编程 */ public class DBUtil { //工具类中的构造方法都是私有的,因为 ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...
- DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库
废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...
- Mybatis是如何封装Jdbc的?
JDBC六个步骤 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //1. 加载驱动 C ...
随机推荐
- Filebeat+ELK部署文档
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出. 简单介绍: 日志主要包括系统日志.应用 ...
- 学习WPF
http://www.cnblogs.com/prism/archive/2010/07/21/1781855.html 如何在WPF中画三角,以及把按钮设置成颜色渐变的样式:
- Java中多态性的实现
class A ...{ public String show(D obj)...{ return ("A and D"); } public String show(A obj) ...
- js中escape对应的C#解码函数 UrlDecode
js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意 js中escape对应的C#解码函数 System.We ...
- Yii2.0连接多个数据库
Yii2.0连接多个数据库 一个项目根据需要会要求连接多个数据库,这里记录下实际项目中的操作流程.包括对数据库连接的配置以及如何生成模型文件,在控制器中加以运用. 一.配置 打开数据库配置文件c ...
- Python3:判断三角形的类型
# 判断三角形类型def triangle(a,b,c): if a>0 and b>0 and c>0: if a+b>c and b+c>a and a+c>b ...
- 一文掌握 Linux 性能分析之内存篇
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面我们已经学 ...
- JQuery EasyUI 初始
基于jQuery的用户界面插件集合 1. jQuery easyui提供了一个完整的组件的集合,包括强大的DataGrid,树网格,面板.用户可以使用他们一起,或者只是用一些组件,组合和构建他想要的跨 ...
- SSH总结
远程服务介绍说明 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢?1.提供远程连接服务器的服务2.对传输的数据进 ...
- FM算法(二):工程实现
主要内容: 实现方法 Python实现FM算法 libFM 一.实现方法 1.FM模型函数 变换为线性复杂度的计算公式: 2.FM优化目标 根据不同的应用,FM可以采用不同的损失函数loss fu ...