/**
* Created by Clear on 2018/8/11.
* here provide the kind of connections from mysql database,and close the resources of the mysql
* there are
* load driver
* use properties file
* use xml file
* use tomcat
* and... so on
*
*
*
*/
public class MysqlUtil {
/**
* 链接数据库
*/
/**
* 方法一:
* 加载驱动的方法不止一种,但这种最常用
*/
public static Connection getConnectionOne(String database,String username,String password){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+database,username,
password);
return connection;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 方法二:
* 利用properties文件
* ::::: 在Web 编程时 文件难以定位
*/
public static Connection getConnectionTwo() {
/**
* 建立文件
*/
Properties pro = new Properties(); InputStream in = MysqlUtil.class.getClassLoader().getResourceAsStream("mysqllog.properties");
try {
pro.load(in);
Class.forName(pro.getProperty("driver"));
String username = pro.getProperty("user");
String password = pro.getProperty("password");
String database = pro.getProperty("database");
String url = pro.getProperty("url"); Connection connection = DriverManager.getConnection(url+database,username,password);
return connection;
} catch (Exception e) {
e.printStackTrace();
} return null;
}
// Connection ,Statement, ResultSet 这几个资源的关闭是有顺序的
public static void close (Object...objects) throws MysqlCloseException {
Map<String,Object> map = new HashMap();
for(Object o : objects){
if(o instanceof ResultSet){
map.put("ResultSet",o);
}else if(o instanceof Connection){
map.put("Connection",o);
}else if(o instanceof Statement){
map.put("Statement",o);
}else if(o instanceof PreparedStatement){
map.put("PreparedStatement",o);
}else{
throw new MysqlCloseException("关闭异常,不能处理");
}
}
Object obj = map.get("ResultSet");
if(obj!=null){
ResultSet r = (ResultSet)obj;
try {
r.close();
map.remove("ResultSet");
} catch (SQLException e) {
e.printStackTrace();
}
}
obj = map.get("PreparedStatement");
if(obj!=null){
PreparedStatement p = (PreparedStatement)obj;
try {
p.close();
map.remove("PreparedStatement");
} catch (SQLException e) {
e.printStackTrace();
}
}
obj = map.get("Statement");
if(obj!=null){
Statement s = (Statement)obj;
try {
s.close();
map.remove("Statement");
} catch (SQLException e) {
e.printStackTrace();
}
}
obj = map.get("Connection");
if(obj!=null){
Connection c = (Connection)obj;
try{
c.close();
map.remove("Connection");
}catch(SQLException e){
e.printStackTrace();
}
}
}
}

java mysql数据库链接与资源关闭的更多相关文章

  1. Java JDBC 数据库链接小结随笔

    Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement  和  PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...

  2. Mysql数据库的打开和关闭

    Mysql数据库的打开和关闭: 选择计算机(win7)-右键管理 在新窗口选择--服务 5 找到mysql,然后右键-启动(停止)

  3. Java JDBC数据库链接

    好久没有编写有关数据库应用程序啦,这里回顾一下java JDBC. 1.使用Java JDBC操作数据库一般需要6步: (1)建立JDBC桥接器,加载数据库驱动: (2)连接数据库,获得Connect ...

  4. Windows下MySQL数据库的安装与关闭开机自启动

    我在学习java,安装数据库时找了很多教程,现在在这里总结一下我安装数据库的过程,我安装的是mysql-5.6.42-winx64版本的. 数据官方下载地址:https://dev.mysql.com ...

  5. SpringBoot-(8)-配置MySQL数据库链接,配置数据坚挺拦截,创建默认数据表

    一,链接mysql数据库 # 数据源基本配置 spring.datasource.username=root spring.datasource.password=123456 spring.data ...

  6. django用MySQL数据库链接

    在使用的过程中出现了没有mysqld.sock这个文件的情况,无法连接到mysql数据库. 几经周折,设置路径,改文件夹的权限,也都无济于事,只有重新安装mysql服务器,第一次尝试还是失败,服务器安 ...

  7. java mysql 数据库

    1. jdbc 驱动名还是数据库 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydataString url ...

  8. Java之MySql数据库链接

    一 下载MySql驱动包,下载途径很多,随便Google或度娘一下就有,我下载的是mysql-connector-java-5.1.26版本,下载后把它解压到指定路径 二 在Eclipse中新建项目T ...

  9. mysql数据库链接与创建

    有童鞋问到说,环境搭建好了,mysql也安装了,但是就是进不去数据库,也启动不了,一直报错,那么下面这边就说下如何用Navicat链接上创建的数据库 首先 1)在xshell里进入mysql,命令是: ...

随机推荐

  1. Determine YARN and MapReduce Memory Configuration Settings

    Determine YARN and MapReduce Memory Configuration Settings https://docs.hortonworks.com/HDPDocuments ...

  2. Docker Kubernetes 创建管理 Pod

    Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  3. webpack(import路径配置)(自动打开浏览器)(自定义运行命令)

  4. vue2.0自学教程(一):走进vue2.0大观园

    人狠话不多,咱直入主题吧! 开发软件: Visual Studio Code 支持环境: nodejs+windows 版本: vue2.0 1.初识vuevue是一个前端框架,使用MVVM(Mode ...

  5. PHP isset 和 array_key_exists 对比

    经常使用 isset 判断变量或数组中的键是否存在,但是数组中可以使用 array_key_exists 这个函数,那么这两个 哪一个更优呢? 官方文档这样定义两者: isset:语言构造器,用于检测 ...

  6. CORS跨域请求

    一.问题: 服务器端代码 from flask import Flask from flask import make_response from flask import jsonify app = ...

  7. Js — CommonUtil

    一些js脚本的公用方法: 1:字符串根据给定的每行长度换行 2:比较两个时间的大小3:计算两个日期间相差的天数 1.字符串根据给定的每行长度换行 /** *words:原始字符串 *avg:每行字数 ...

  8. 异步async/await简单应用与探究

    感谢Marco CAO指出的两点错误,已做出修改与补充 异步函数(async/await)简单应用 .NET Framework4.5提供了针对异步函数语法糖,简化了编写异步函数的复杂度. 下面通过一 ...

  9. EXCEL中把两列表格里的数字合成一列并且中间用逗号隔开

    背景:使用loadrunner做参数化时,往往需要在excel表格中做数据,比如:第一列是用户名,第二列是密码,格式如下: 再将用户名和密码合并成一列,以逗号分隔,需要用到的公式为: =A1& ...

  10. DP爬台阶问题

    1. 初级爬台阶 - 求最短步数 LC - 70 一次可以迈1-2个台阶,因此最短步数与前两个台阶有关. Initial state: 第一阶:1步 : 第二阶:1步 deduction functi ...