单例模式在JDBC数据库连接操作里的应用
来源:互联网 发布:lol账号出现数据异常 编辑:程序博客网 时间:2024/06/05 01:13
设计模式之单例模式一般应用在在数据库操作里,数据库操作就要经常创建实例,然后进行数据库操作,所有就可以
将数据库操作的方法,进行封装,然后采用单例模式进行设计,然后采用单例模式之后,就可以节约系统资源,对于
一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能
先编写数据库配置文件config.properties
host=localhost
port=3306
database=tourism_system
username=root
password=111
DBHelpUtil.java:
/** * * 数据库连接的类,配置信息保存在config.properties里 * */public class DBHelperUtil {//静态成员变量,支持单态模式private static DBHelperUtil manager = null;//配置资源文件private PropertyResourceBundle bundle;//JDBC驱动private static String jdbcDriver = null;//主机private String host = "";//数据库端口private String port = "";//数据库名称private String database = "";//数据库用户名private String username = "";//数据库密码private String password ="";//数据库连接字符串private String connStr = "";//连接对象private Connection conn = null;//PrepareStatement对象private PreparedStatement pstm = null;//CallableStatement对象private CallableStatement cstm = null;/** * 私有构造对象,不可以实例化 * @throws IOException */public DBHelperUtil() throws IOException{bundle = new PropertyResourceBundle(DBHelperUtil.class.getResourceAsStream("config.properties"));this.host = getString("host");this.database = getString("database");this.port = getString("port");this.username = getString("username");this.password = getString("password");jdbcDriver = "com.mysql.jdbc.Driver";//数据库连接的url,设置了编码为UTF-8connStr = "jdbc:mysql://"+host+":"+port+"/"+database+"?useUnicode=true&characterEncoding=UTF-8";}/** * 读取配置文件中的值 * @param * key 配置文件的key * @return * key对应的值 */private String getString(String key){return this.bundle.getString(key);}/** * 单态模式获取实例 * * @return SqlManager对象 * @throws IOException * @throws ClassNotFoundException */public static DBHelperUtil createInstance() throws IOException, ClassNotFoundException{if (manager == null){manager = new DBHelperUtil();manager.initDB();}return manager;}/** * 初始化连接参数,由指定的DBType生成 * * @throws ClassNotFoundException */public void initDB() throws ClassNotFoundException{Class.forName(jdbcDriver);}/** * 连接数据库 * @throws SQLException */public void connectDB() throws SQLException{conn = DriverManager.getConnection(connStr,username,password);conn.setAutoCommit(false);// 设置自动提交为false} /** * 关闭数据库,释放内存 * @throws SQLException */public void close() throws SQLException {if (pstm != null){pstm.close();}if (cstm != null){cstm.close();}if (conn != null){conn.close();}} /** * 设置PrepareStatement对象中Sql语句中的参数 * @param sql * sql语句 * @param params * 参数列表 * @throws SQLException */@SuppressWarnings("unused")private void setPrepareStatementParams(String sql, Object[] params) throws SQLException{pstm = conn.prepareStatement(sql); // 获取对象if (params != null){for (int i = 0; i < params.length; i++) // 遍历参数列表填充参数{pstm.setObject(i + 1, params[i]);}}}/** * 执行查询 * * @param sql * sql语句 * @param params * 参数列表 * @return 返回ResultSet类型的查询结果 * @throws SQLException */public ResultSet executeQuery(String sql, Object[] params) throws SQLException{// 执行查询数据库接口ResultSet rs = null;manager.setPrepareStatementParams(sql, params); // 填充参数rs = pstm.executeQuery(); // 执行查询操作return rs;}/** * 更新数据库操作 * * @param sql * sql语句 * @param params * 参数列表 * @return 执行操作的结果 * @throws SQLException */public boolean executeUpdate(String sql, Object[] params)throws SQLException {// 执行无返回数据的数据查询,返回值是被改变的书库的数据库项数boolean result = false;manager.setPrepareStatementParams(sql, params); // 填充参数pstm.executeUpdate(); // 执行更新manager.commitChange();result = true;return result;}/** * 提交信息到数据库 * @throws SQLException */private void commitChange() throws SQLException{conn.commit();}}
调用工具类:
先创建实例,createInstance,然后连接数据库,调用方法就可以
2 0
- 单例模式在JDBC数据库连接操作里的应用
- 单例模式 常用在例如:数据库连接及其操作
- 单例设计模式在JDBC中的应用
- 单例设计模式在JDBC中的应用
- php应用数据库连接中的单例模式
- 单例模式在spring的应用
- 单例模式--数据库连接
- 数据库连接池 单例模式的实现
- JDBC数据库连接的简单应用
- 单例模式创建数据库连接
- 数据库连接池之外观模式+单例模式的实现
- 懒汉单例模式在多线程下的应用
- jdbc数据库操作(二)单例模式
- 【Java】利用单例模式、可变参数优化Java操作Mysql数据库、JDBC代码的写作
- Unity3D 里的单例模式
- Unity3D 里的单例模式
- 单例模式里的两种
- 1 教科书里的单例模式
- 统计学习笔记——k近邻法与kd树
- underfitting and overfitting
- OC- Method Swizzling
- 如何摆脱拖延症
- JSP脚本元素
- 单例模式在JDBC数据库连接操作里的应用
- c++第1次试验2
- Linux笔记(27)——用户切换与其他命令
- 【opencv】CvMat矩阵结构
- How to install Eclipse JavaScript Development Tools (JSDT)
- 第二周项目3输出图形(f)
- 进度对话框
- C#类的总结
- android studio编译问题