当前位置: 首页 > news >正文

单例模式获取mysql连接_获取JDBC Connection单例模式

package Base;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

//不可被继承的工具类

public final class JdbcUtilsSingleton {

//私有化成员变量,防止影响其他类共有的变量

private  String url = "jdbc:mysql://127.0.0.1:3306/jdbc";

private  String username = "root";

private  String password = "123456";

private static JdbcUtilsSingleton instance=null;

//私有化构造函数,确保不被外部实例化

private JdbcUtilsSingleton(){

}

/**

* 考虑到并发需要枷锁

* @return

*/

public static JdbcUtilsSingleton getInstance(){

if(instance == null){

synchronized(JdbcUtilsSingleton.class){

if(instance == null){

instance = new JdbcUtilsSingleton();

}

}

}

return instance;

}

//加载JVM时只创建一次连接

static{

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//获取连接

public Connection getConnection() throws SQLException{

return DriverManager.getConnection(url, username, password);

}

//规范释放资源方法

public void Free(ResultSet rs,Statement stmt,Connection conn){

try{

if(rs != null)

rs.close();

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

if(stmt != null)

stmt.close();

}catch(SQLException ex){

ex.printStackTrace();

}finally{

try{

if(conn != null)

conn.close();

}catch(SQLException em){

em.printStackTrace();

}

}

}

}

}

单例模式要点总结:

1.私有化instance类变量和构造函数,确保不被外部实例化对象,保证唯一单一实例。

2.考虑到程序并发处理需要加锁

3.通过唯一入口静态方法获取实例:getInstance()

相关文章:

  • centos7安装源mysql5.6_centos7.4 mysql5.6 源码安装
  • 系统安装时文件系统的选择
  • python super 多重继承_Python的super()如何处理多重继承?
  • debian系统安装
  • qt修改程序图标名称_Qt for Android修改应用程序的图标和名称
  • 一些有用的打电话,写email,写信一些有用的知识
  • vscode自动快捷格式化代码_vsCode 代码格式化(Ctrl+S自动格式化代码+保存)
  • java数组定义错误_JAVA定义数组 int a[]=new int[100000] 错误
  • java 执行查询_java执行SQL语句实现查询的通用方法详解
  • linux使用学习手记[不断更新]
  • htmlparser的使用java_HTMLParser的使用
  • 访《桃花源记》之桃花源
  • java做题没思路_学java快两月,代码能看懂什么意思干什么用的,就是一到做题,脑子一片空白什么思路都没有这是为什么?...
  • 华中之旅——长沙
  • mysql 编码 windows_MySQL编码设置在Windows与Linux操作系统下
  • 【技术性】Search知识
  • CSS魔法堂:Absolute Positioning就这个样
  • Druid 在有赞的实践
  • golang中接口赋值与方法集
  • Javascript编码规范
  • JavaScript对象详解
  • java中的hashCode
  • js
  • Laravel Telescope:优雅的应用调试工具
  • PhantomJS 安装
  • 初识 webpack
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 什么软件可以剪辑音乐?
  • 使用SAX解析XML
  • 跳前端坑前,先看看这个!!
  • 以太坊客户端Geth命令参数详解
  • 在Unity中实现一个简单的消息管理器
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Spring Batch JSON 支持
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)字符分类函数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Ruby)Ubuntu12.04安装Rails环境
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (转)编辑寄语:因为爱心,所以美丽
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core 中插件式开发实现
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET Project Open Day(2011.11.13)
  • .NET 中创建支持集合初始化器的类型
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)