一、采用读取数据源配置文件的方式
package com.ofsp.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class DataSourceUtil {
public static final String DATASOURCE_FILENAME ="jdbc.properties"; //连接数据库的数据源文件
public static final String DATASOURCE_URL = "jdbc.url"; //数据源文件里url的key
public static final String DATASOURCE_USERNAME = "jdbc.username";//数据源文件里用户名的key
public static final String DATASOURCE_PASSWORD = "jdbc.password";//数据源文件里密码的key
/**
* 读取配置文件信息
* @return Properties 配置文件信息
* @throws Exception
*/
public static Properties getProperties() throws Exception {
InputStream in = null;
if (in == null) {
//Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。
例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name")
会在com.test.mycode包下查找相应的资源。如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找。 ClassLoader.getResourceAsStream() 无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。
in = Thread.currentThread().getContextClassLoader().getResourceAsStream(DATASOURCE_FILENAME); //路径是 classpath的相对路径, classpath是指 WEB-INF文件夹下的classes目录
if(in == null){
throw new Exception("找不到路径为"+DATASOURCE_FILENAME+"的数据源配置文件。");
}
}
Properties properties = new Properties();
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
/**
* 读取配置文件获取连接数据库的数据库url
* @return String 数据库名
* @throws Exception
*/
public static String getDatabaseURL() throws Exception {
Properties p = getProperties();
return p.getProperty(DATASOURCE_URL);
}
/**
* 读取配置文件获取连接数据库的用户名
* @return String 用户名
* @throws Exception
*/
public static String getUserOfDatabase() throws Exception {
Properties p = getProperties();
return p.getProperty(DATASOURCE_USERNAME);
}
/**
* 读取配置文件获取连接数据库的密码
* @return String 密码
* @throws Exception
*/
public static String getPasswordOfDatabase() throws Exception {
Properties p = getProperties();
return p.getProperty(DATASOURCE_PASSWORD);
}
/**
* 获取数据库Connection
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception{
Properties p = getProperties();
String url = p.getProperty(DATASOURCE_URL);
String username = p.getProperty(DATASOURCE_USERNAME);
String password = p.getProperty(DATASOURCE_PASSWORD);
return DriverManager.getConnection(url, username, password);
}
/**
* 获取指定数据库和用户的所有表名
* @param conn 连接数据库对象
* @param user 用户
* @param database 数据库名
* @return
*/
public static List<String> getAllTableNames(Connection conn,String database,String schem,String tableName) {
List<String> tableNames = new ArrayList<String>();
if (conn != null) {
try {
DatabaseMetaData metadata = conn.getMetaData();
// 表名列表
ResultSet rest = metadata.getTables(database, schem.toUpperCase(), tableName.toUpperCase(), new String[] {"TABLE"});
while (rest.next()) {
tableNames.add(rest.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return tableNames;
}
}
二、如果采用Spring框架的话,还可以从Spring的配置文件中获取当前数据源:
数据源文件配置在spring-context.xml文件中,部分片断截取:
DruidDataSource dataSource = ApplicationContextHelper.getBean("dataSource");//获取数据源
Connection connection = dataSource.getConnection();//获取连接
String user = dataSource.getUsername();//获取用户名
注意:connection用完后一定要及时close掉,否则会出现溢出错误。
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- Java读取图片exif信息实现图片方向自动纠正
起因 一个对试卷进行OCR识别需求,需要实现一个功能,一个章节下的题目图片需要上下拼接合成一张大图,起初写了一个工具实现图片的合并,程序一直很稳定的运行着,有一反馈合成的图片方向不对,起初怀疑是本身图 ...
- Java读取txt文件信息并操作。
一.java读取txt文件内容 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Fi ...
- fstat - 读取文件相关信息
#fstat读取到的信息 ["dev"]=> int(16777220) ["ino"]=> int(66880002) ["mode&q ...
- Java用System读取系统相关信息、环境变量——(六)
package Java_Test; public class System1 { public static void main(String[] args) { // TODO Auto-gene ...
- (转)java读取数据库表信息,子段
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...
- java 读取数据库中文信息,为何在jsp页面中出现乱码
有如下几种解决办法:1.保证项目的字符编码和每一个jsp页面的字符编码一致,如果不一致可能导致中文乱码问题<%@ page language="java" contentTy ...
- java读取配置文件的信息
1. 首先,工程结构如下: 注:a. 蓝色标注的两个文件是和com包平级的,都在src下.EnnNotificationPushProxy.ini是这个工程的配置文件,log4j.properties ...
- JAVA获取系统相关信息
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003596 获取JRE系统相关参数 java 通过S ...
随机推荐
- 唯独ie浏览器缓存ajax请求
用fiddler调试http请求,在ie浏览器下,如果请求命中缓存,fiddler不会包含该请求.但是在chrome下会包含缓存的请求,Result显示为304. ie浏览器还会缓存通过ajax请求的 ...
- motor和servo
程序简单易读,不再做注释 motor.py from gpiozero import Motor from gpiozero import LED led = LED(2) motor = Motor ...
- 快速找到ARP病毒源
第一招:使用Sniffer抓包 在网络内任意一台主机上运行抓包软件,捕获所有到达本机的数据包.如果发现有某个IP不断发送请求包,那么这台电脑一般就是病毒源.原理:无论何种ARP病毒变种,行为方式有两种 ...
- Python一切皆对象
Python从设计之初就是一门面向对象的语言,它有一个重要的概念,即一切皆对象. Java虽然也是面向对象编程的语言,但是血统没有Python纯正.比如Java的八种基本数据类型之一int,在持久化的 ...
- android学习-第一讲
一.基础View控件 View类的常见XML属性,对应发放及说明 每个界面控件都需要设置Android:layout_height,Android:layout_width,指定控件的高度和宽度.通常 ...
- Spring学习笔记——01 控制反转
想一下之前学的Java,如果某个类需要引用某个对象,则需要手动new一个出来.这样带来的一个问题就是,若被引用的类发生改动或被删除,则引用它的所有类都会报错.因为两个类耦合在一起了.解决的办法就是不由 ...
- 全景智慧掌上城,飞入寻常百姓家——VR全景智慧城市
随着腾讯和阿里陆续将AR技术加入到新年抢红包大战之中,人们对于VR.AR未来的应用空间又多了一些想象.同传统的基于二维元素的抢红包不同,借助VR.AR的技术能够让用户获得一种更加真切的体验,这种体验相 ...
- twemproxy发送流程探索——剖析twemproxy代码正编
本文想要完成对twemproxy发送流程--msg_send的探索,对于twemproxy发送流程的数据结构已经在<twemproxy接收流程探索--剖析twemproxy代码正编>介绍过 ...
- Asp.Net生命周期的详解
一.Asp.Net页面生命周期的概念 当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端IIS)发送一个request请求,服务器就会判断发送过来的请求页面,当完全识别 TTP页面处理程 ...
- DOM事件类型总结大全
unload:事件在用户退出页面时发生 window.onload = function(){ return "页面关闭!"; }; onblur:失去焦点发生变化 window. ...