jdbc读取mysql数据库_Java JDBC连接数据库(数据库信息读取property文件) - 穿梭于偶然...

本文详细介绍了如何在Java应用程序中配置Oracle数据库连接,包括db-conn-param.properties的正确写法,以及如何创建ConnectionFactory类来管理和获取数据库连接。在测试部分展示了如何使用ConnectionFactory获取连接并执行SQL查询。
摘要由CSDN通过智能技术生成

大部分的应用程序程序都离不开

1.首先看看db-conn-param.properties的写法:

#######################Oracle###########################

oracle.driver: oracle.

注意:

* “oracle.jdbc.driver.OracleDriver” 等字符串前后面不可以有空格,否则会出现找不到驱动或用户名、密码错误等异常。

* properties 中字符串写入形式如同键值对,所以可以同上使用“=”或“:”把key与value隔开。

* properties 中value字符串不能使用引号包裹。

2.创建ConnectionFactory:

package com.orcl.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

import java.util.UUID;

public class ConnectionFactory {

/**

* 驱动

*/

private String driver;

/**

* 连接字符串

*/

private String url;

/**

* 数据库登录用户名称

*/

private String username;

/**

* 数据库登录密码

*/

private String password;

private String db;

/**

* 常量代表"ORACLE"

*/

public final static String ORACLE_DB = "oracle";

/**

* 常量代表"MYSQL"

*/

public final static String MYSQL_DB = "mysql";

/**

* 单例模式 获取一个数据库连接工厂

*/

private static ConnectionFactory connFactory = null;

public static synchronized ConnectionFactory getConnFactoryInstance(String db){

if(connFactory == null){

connFactory = new ConnectionFactory(db);

}

return connFactory;

}

private ConnectionFactory(String db){

try {

initOrclParams(db);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 通过配置文件获取数据库连接参数

* @param db 数据库名称

* @throws IOException

*/

private void initOrclParams(String db) throws IOException{

Properties properties = new Properties();

InputStream in = new FileInputStream(new File("db-conn-config.properties"));

properties.load(in);

if(db.equals(ORACLE_DB))

{

getParams(properties,db);

}

else if(db.equals(MYSQL_DB))

{

getParams(properties,db);

}

}

/**

* 根据数据库名获取相应的参数

* @param p Properties

* @param db

*/

private void getParams(Properties p,String db){

//注意:如果不用trim(),这样properties文件中的字符串后面不能有空格,否则会出错

driver = p.getProperty(db + ".driver").trim();

url = p.getProperty(db + ".url").trim();

username = p.getProperty(db + ".username").trim();

password = p.getProperty(db + ".password").trim();

}

/**

* 获取连接对象

* @param db 连接的数据库名 取值于ConnectionFactory中的常量:ORCL_DB/MYSQL_DB

* @return

*/

public Connection getConn()

{

Connection conn = null;

try

{

Class.forName(driver);

conn = DriverManager.getConnection(url, username, password);

// 设置不自动提交

conn.setAutoCommit(false);

}

catch (ClassNotFoundException e)

{

e.printStackTrace();

}

catch (SQLException e)

{

e.printStackTrace();

}

return conn;

}

/**

* 关闭操作

* @param conn

* @param pst

* @param rs

*/

public static void close(Connection conn, PreparedStatement pst, ResultSet rs) {

try {

if (rs != null) {

rs.close();

}

if (pst != null) {

pst.close();

}

if (conn != null) {

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 获取UUID

* @return

*/

public String getUUID() {

return UUID.randomUUID().toString();

}

public void setPassword(String password) {

this.password = password;

}

public String getDriver() {

return driver;

}

public void setDriver(String driver) {

this.driver = driver;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public String getDb() {

return db;

}

public void setDb(String db) {

this.db = db;

}

}

3.测试:

@Test

public void test() {

ConnectionFactory factory = ConnectionFactory.getConnFactoryInstance(ConnectionFactory.ORACLE_DB);

Connection conn = factory.getConn();

try {

PreparedStatement pst = conn.prepareStatement("select * from emp");

java.sql.ResultSet rs = pst.executeQuery();

while (rs.next()) {

System.out.println(rs.getString(2));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

如果使用其他的数据库,可以在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值