dljd_011_jdbc再次封装工具类_把数据库的相关信息写到配置文件中,减低代码的耦合度

一、将连接数据库所需的相关信息写入到配置文件、通过读取配置文件来获取数据库的相关信息

package edu.aeon.aeonutils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * [说明]:jdbc工具类
 * 封装了jdbc里面的重复步骤:数据库的连接和数据库资源的释放
 * @author aeon
 * @version 1.2(该版本将连接数据库的各种数据库配置信息(用户名、密码、驱动及url)单独提取到配置文件中)
 */
public class AeonJdbcUtils {
    private static String username;
    private static String password;
    private static String driverClass;
    private static String url;
    /**
     * 静态代码块处理读取之前的数据
     */
    static{
        InputStream inputStream = AeonJdbcUtils.class.getClassLoader().getResourceAsStream("config/database/database.properties");
        Properties properties=new Properties();
        try {
            properties.load(inputStream);
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            driverClass = properties.getProperty("driverClass");
            url = properties.getProperty("url");
        } catch (IOException e) {
            System.out.println("初始化读取数据库配置文件--->database.properties失败!");
            e.printStackTrace();
        }
    }
    /**
     * 连接数据库
     * @return 数据库连接对象
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getMySqlConnection() throws ClassNotFoundException, SQLException{
        Class.forName(driverClass);
        return DriverManager.getConnection(url, username, password);
    }
    /**
     * 释放数据库资源
     * @param resultSet 结果集
     * @param statement 执行sql语句的对象
     * @param connection 数据库连接对象
     */
    public static void closeDB(ResultSet resultSet,Statement statement,Connection connection){
        if(null!=resultSet){
            try {
                resultSet.close();
            } catch (SQLException e) {
                System.out.println("释放数据库资源失败!--->resultSet");
                e.printStackTrace();
            }
        }
        if(null!=statement){
            try {
                statement.close();
            } catch (SQLException e) {
                System.out.println("释放数据库资源失败!--->statement");
                e.printStackTrace();
            }
        }
        if(null!=connection){
            try {
                connection.close();
            } catch (SQLException e) {
                System.out.println("释放数据库资源失败!--->connection");
                e.printStackTrace();
            }
        }
    }
}

测试代码:  

package edu.aeon.aeonutils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * [说明]:测试连接数据库工具类(version 1.2)
 * @author aeon
 *
 */
public class TestAeonJdbcUtils {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            connection = AeonJdbcUtils.getMySqlConnection();
            statement = connection.createStatement();
            String sql = "select * from user";
            resultSet = statement.executeQuery(sql);
            System.out.println("用户id\t用户名\t用户密码");
            while (resultSet.next()) {
                int userId = resultSet.getInt("userId");// 根据表字段名获取该行记录上的字段名所对应的字段值
                String userName = resultSet.getString("userName");
                String userPw = resultSet.getString("userpw");// 数据库中的字段不区分大小写
                System.out.println(userId + "\t" + userName + "\t" + userPw);
            }
        } catch (ClassNotFoundException e) {
            System.out.println("加载驱动失败!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("连接数据库失败!");
            e.printStackTrace();
        }
        AeonJdbcUtils.closeDB(resultSet, statement, connection);
    }
}

database.properties中的配置信息:  

 username=root
 password=root
 driverClass=com.mysql.jdbc.Driver
 url=jdbc:mysql://localhost:3306/db_test

项目包视图截图如下:

  

建库及表语句:  

drop database db_test;
create database db_test;
use db_test;
create table user(
    userId int(5) primary key comment ‘用户id‘,
    userName varchar(16) comment ‘用户姓名‘,
    userPw varchar(16) comment ‘用户密码‘
);
insert into user(userId,userName,userPw) values(10001,‘user1‘,‘user1‘);
insert into user(userId,userName,userPw) values(10002,‘user2‘,‘user2‘);
insert into user(userId,userName,userPw) values(10003,‘user3‘,‘user3‘);
insert into user(userId,userName,userPw) values(10004,‘user4‘,‘user4‘);
insert into user(userId,userName,userPw) values(10005,‘user5‘,‘user5‘);

数据库信息截图:  

  

测试结果截图:

  

原文地址:https://www.cnblogs.com/aeon/p/10072674.html

时间: 2024-08-27 23:22:44

dljd_011_jdbc再次封装工具类_把数据库的相关信息写到配置文件中,减低代码的耦合度的相关文章

iOS开发—音频的播放的简单介绍和封装工具类

iOS开发—音频的播放的简单介绍和封装工具类 一.音效的播放简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav&qu

JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 this的特点 this就代表本类对象 这在我们的set方法里面是有的 public void setName(String name) { this.name = name; } this代表他所在的函数对属对象的引用 现在我们这里有这么一个需求 //公共的 类 类名 public class H

Android地图应用新视界--mapbox的常用功能封装工具类

上一篇- Android地图应用新视界--mapbox的应用开发之初始集成篇-中介绍了全球应用的多平台地图框架mapbox在Android端的集成步骤, 以及Android的地图应用新视界--mapbox的应用开发之简单功能提取篇,如果要了解建议先看前两篇哦 此篇将延续上篇内容,主要提取常用功能封装工具类,可以直接当工具类使用 直接上干货 如下: public class MapBoxUtils { private MapboxMap mapboxMap; private Context con

Android工具类之字符串工具类,提供一些字符串相关的便捷方法

/** * 字符串工具类,提供一些字符串相关的便捷方法 */ public class StringUtil { private StringUtil() { throw new AssertionError(); } /** * is null or its length is 0 or it is made by space * <p/> * <pre> * isBlank(null) = true; * isBlank("") = true; * isBl

nagios数据库 主机相关信息查询

mysql> select a.host_object_id,a.display_name,a.address,b.hostgroup_id,b.alias from nagios_hosts a,nagios_hostgroups b,nagios_hostgroup_members c where c.host_object_id=a.host_object_id and c.hostgroup_id=b.hostgroup_id order by b.hostgroup_id;+-----

JavaWeb之抓包之旅(三) :HttpClient封装工具类

谈到httpClient相信大家都不陌生,网上也有一大推别人总结的.HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议. 详细请参考文档:HttpClient 我们在对数据进行请求的时候经常使用. 前不久在做一个百度地图定位的(通过GPS判断你在某个学校,但是并不是每个学校地图上都有,而且如何确定范围呢?) 类似于饿了么,我一直在想它为什么能定位到具体的某个宿舍呢

java工具类–自动将数据库表生成javabean

最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不是要崩溃. 于是想写个工具类,自动生成javabean. 先说下思路: 1.读取数据库表,获取里面的字段名. 准备连接数据库的驱动包,这里只是针对了oracle数据库和mysql数据库 2.构建一个stringBuffer字符串,用来生成我们需要的类. 3.写入文件 要求具备相应的文件流知识. 好了

Hibernate工具类_抽取重复核心代码

问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具类 *@author cxh */ import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg

获取全局上下文(getApplicationContext)_创建Shared Preference工具类_实现自动登录

===========================获取全局上下文(getApplicationContext)======================== 1.在com.example.autologin.myapplication包中创建Myapplication extends Application 代码: 1 public class Myapplication extends Application 2 { 3 private static Context context; 4