Java使用db.properties配置数据库连接属性

1、Properties类的介绍

在Java中提供了 java.util.Properties 类,来读取 .properties 属性文件。在程序调用 Properties 类的 load() 方法时,系统把 .properties 属性文件的内容加载到内存中。因为 Properties 类继承了 Hashtable 类,Properties 类把“=”之间的内容,添加到Hashtable 对象的 key 值,并同时添加 key 值对应的 value 值,也就是“=”右侧的值。所有在编写 .properties 属性文件时一定要用“=”号把名称与值分隔开。

通过 .properties 属性文形式只能保存 String 类型信息。

Properties 类是线程安全的,多个线程可以共享一个Properties对象,而不需要外部同步。

Properties类的构造方法:

构造方法说明
Properties()创建一个无默认值的空属性列表。
Properties(Properties defaults)创建一个带有指定默认值的空属性列表。

Properties类的常用方法:

方法说明
void load(InputStream inStream)从输入流中读取属性列表(键和元素对)。
String getProperty(String key)用指定的键在此属性列表中搜索属性。
String getProperty(String key, String defaultValue)用指定的键在属性列表中搜索属性。
void list(PrintStream out)将属性列表输出到指定的输出流。
void list(PrintWriter out)将属性列表输出到指定的输出流。
void loadFromXML(InputStream in)将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
Enumeration<?> propertyNames()返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
Object setProperty(String key, String value)调用 Hashtable 的方法 put。
void store(OutputStream out, String comments)以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
void storeToXML(OutputStream os, String comment)发出一个表示此表中包含的所有属性的 XML 文档。
void storeToXML(OutputStream os, String comment, String encoding)使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。

示例:Properties类的使用。

(1)在项目的默认路径(src目录)下创建 my.properties 属性文件(名称可以自定义,扩展名必须为 properties )。

userName=pan_junbiao
blogUrl=https://blog.youkuaiyun.com/pan_junbiao

(2)编写读取 properties 属性文件,并输出属性值。

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Properties类的使用示例
 * 
 * @author pan_junbiao
 */
public class PropertiesTest
{
	public static void main(String[] args)
	{
		try
		{
			// 创建Properties类对象
			Properties properties = new Properties();

			// 读取properties属性文件到输入流中
			InputStream is = PropertiesTest.class.getResourceAsStream("/my.properties");

			// 从输入流中加载属性列表
			properties.load(is);

			// 获取properties文件中的属性值
			String userName = properties.getProperty("userName");
			String blogUrl = properties.getProperty("blogUrl");

			// 输出结果
			System.out.println("用户名称:" + userName);
			System.out.println("博客地址:" + blogUrl);

		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}

执行结果:

 

2、使用 db.properties 文件配置数据库连接属性

示例:使用 db.properties 文件配置数据库连接属性,并实现对MySQL数据库的连接。

(1)在项目的默认路径(src目录)下创建 db.properties 属性文件,并编写MySQL数据连接的相关配置信息。

DRIVER_CLASS=com.mysql.cj.jdbc.Driver
DB_URL=jdbc:mysql://localhost:3306/db_admin?serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf8&useSSL=false
DB_USER=root
DB_PASSWORD=123456

(2)编写获取 db.properties 属性文件信息,并实现对MySQL数据库的连接。

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

/**
 * 使用 db.properties 文件配置数据库连接属性,<br />
 * 并实现对MySQL数据库的连接
 * 
 * @author pan_junbiao
 *
 */
public class ConnTest
{
	private static String DRIVER_CLASS; // 数据库驱动
	private static String DB_URL; // 数据库连接地址
	private static String DB_USER; // 数据库用户名称
	private static String DB_PASSWORD; // 数据库用户密码

	public static void main(String[] args)
	{
		try
		{
			// 创建Properties类对象
			Properties properties = new Properties();

			// 读取properties属性文件到输入流中
			InputStream is = PropertiesTest.class.getResourceAsStream("/db.properties");

			// 从输入流中加载属性列表
			properties.load(is);

			// 获取数据库连接属性值
			DRIVER_CLASS = properties.getProperty("DRIVER_CLASS");
			DB_URL = properties.getProperty("DB_URL");
			DB_USER = properties.getProperty("DB_USER");
			DB_PASSWORD = properties.getProperty("DB_PASSWORD");

			// 加载数据库驱动类
			Class.forName(DRIVER_CLASS);
			System.out.println("数据库驱动加载成功");

			// 获取数据库连接对象
			Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
			System.out.println("数据库连接成功");

		} catch (ClassNotFoundException cnfe)
		{
			cnfe.printStackTrace();
		} catch (SQLException sqle)
		{
			sqle.printStackTrace();
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
}

执行结果:

 

3、总结

(1)读取 .properties 属性文件时,使用 Class 对象的 getResourceAsStream()方法,把指定的属性文件读入输入流中,并使用 Properties 类中的 load() 方法,从输入流中读取属性列表(键/值对)。

(2)在使用 Class 对象的 load() 方法加载  .properties 属性文件的输入流后,数据在内存中是以 Hashtable 的形式进行保存的。

(3)使用 Properties 类的 getProperty() 方法,通过 key 键读取出 value 值。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值