【数据库】java使用新版的jdbc2连接mysql数据库代码类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【数据库】java使用新版的jdbc2连接mysql数据库代码类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4833字,纯文字阅读大概需要7分钟。
内容图文
![【数据库】java使用新版的jdbc2连接mysql数据库代码类](/upload/InfoBanner/zyjiaocheng/920/80d576d33e28449992f05769d41edd10.jpg)
在java中连接mysql数据库,是一个老生常谈的问题。
到今天为止,网上能搜到相当多的教程和示例了,原理都差不多。
用到的jar包如下,可以到官网下载找到。
- commons-dbcp2-2.5.0.jar
- commons-pool2-2.6.0.jar
- commons-logging-1.2.jar
- mysql-connector-java-8.0.12.jar
这里主要写一下新版的jdbc2连接需要注意的地方,整理成类,供大家参考使用。
DBUtil.java 类:负责管理Connection连接
package core.mysql;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
// 声明一个basicDataSource
private static BasicDataSource dataSource = new BasicDataSource();
// 设置数据源
static {
// 连接参数
String parameters = "&useUnicode=true";//使用Unicode
parameters += "&characterEncoding=utf-8";//编码UTF8
parameters += "&serverTimezone=GMT%2B8";//时区GMT+8
parameters += "&useSSL=false";//禁用SSL
// 数据库名称
String dbName = "sggames";
// 数据库驱动,以使用mysql-connector-java包版本为准
// 按照官方提示支持将Mysql5(com.mysql.jdbc.Driver)改为Mysql6(com.mysql.cj.jdbc.Driver)
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 连接数据库的url,使用(serverTimezone=GMT+8)如果设定serverTimezone=UTC,会比中国时间早8个小时
dataSource.setUrl("jdbc:mysql://localhost:3306/" + dbName + "?" + parameters);
// 连接数据库的用户名
dataSource.setUsername("root");
// 连接数据库的密码
dataSource.setPassword("root");
// 初始化链接数量(默认值:0)
dataSource.setInitialSize(10);
// 最大活动连接数,设置负值不限制
dataSource.setMaxTotal(8);
// 最大空闲连接数,设置负值不限制
dataSource.setMaxIdle(5);
// 设置最小空闲连接数量
dataSource.setMinIdle(1);
//只会发现当前连接失效,再创建一个连接供当前查询使用
dataSource.setTestOnBorrow(true);
//超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
dataSource.setRemoveAbandonedTimeout(180);
}
/**
* 获取数据库连接
*/
public static Connection getConnection() {
Connection conn = null;
try {
// 从本地线程管理对象中获取
if (conn == null) {
conn = dataSource.getConnection();
}
conn.setAutoCommit(false);
} catch (SQLException e) {
System.out.println("获取数据库边接失败:" + e);
throw new RuntimeException(e);
}
return conn;
}
/**
* 仅关闭数据库连接
*/
public static void closeConnection() {
Connection conn = null;
try {
if (conn != null) {
conn.close();
System.out.println("关闭数据库边接成功");
}
} catch (Exception e) {
System.out.println("关闭数据库连接失败:" + e);
throw new RuntimeException(e);
}
}
/**
* 释放资源并关闭连接
*/
public static void free(ResultSet rs, Statement st, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
System.out.println("关闭RS失败:" + e);
e.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
System.out.println("关闭ST失败:" + e);
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
System.out.println("关闭CONN失败:" + e);
e.printStackTrace();
}
}
}
/**
* 数据池信息输出
*/
public static void debugConnection() {
System.out.println(" 最小空闲连接MinIdle=" + dataSource.getMinIdle());
System.out.println(" 最大空闲连接MaxIdle=" + dataSource.getMaxIdle());
System.out.println(" 最大连接数量MaxTotal=" + dataSource.getMaxTotal());
System.out.println(" 初始大小InitialSize=" + dataSource.getInitialSize());
System.out.println(" 超时等待时间MaxWaitMillis=" + (dataSource.getMaxWaitMillis() / 1000));
System.out.println(" 获取活动的连接数getNumActive()=" + dataSource.getNumActive());
System.out.println(" 获取连接数getNumIdle=" + dataSource.getNumIdle());
}
}
DBManager.java 类:负责操作数据库,增,查,删,改。
package core.mysql;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DBManager {
/**
* 从连接池中获取连接
*/
private static Connection getConnection() throws Exception {
return DBUtil.getConnection();
}
/**
* 用于查询,返回结果集
*
* @param sql
* @return 结果集
* @throws java.sql.SQLException
*/
@SuppressWarnings("rawtypes")
public static List query(String sql) throws Exception {
ResultSet rs = null;
PreparedStatement ts = null;
Connection conn = getConnection();
try {
ts = conn.prepareStatement(sql);
rs = ts.executeQuery();
return ResultToListMap(rs);
} catch (SQLException e) {
throw new SQLException(e);
} finally {
DBUtil.free(rs, ts, conn);
}
}
/**
* 结果集映射为hash
*/
@SuppressWarnings({"unchecked", "rawtypes"})
private static List ResultToListMap(ResultSet rs) throws SQLException {
List list = new ArrayList();
while (rs.next()) {
ResultSetMetaData md = rs.getMetaData();
Map map = new HashMap();
int mdCount = md.getColumnCount();
for (int i = 1; i <= mdCount; i++) {
map.put(md.getColumnLabel(i), rs.getObject(i));
}
list.add(map);
}
return list;
}
}
使用方法:
String sql = "select * from 表";
try {
List<Map> rs = DBManager.query(sql);
System.out.println(rs.get(0).get("字段"));
System.out.println("查询成功");
} catch (Exception e) {
System.out.println("查询失败");
e.printStackTrace();
}
就这么简单!
内容总结
以上是互联网集市为您收集整理的【数据库】java使用新版的jdbc2连接mysql数据库代码类全部内容,希望文章能够帮你解决【数据库】java使用新版的jdbc2连接mysql数据库代码类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。