java 数据库 properties_原生Java读取properties连接数据库

将数据库的驱动、url、用户名、密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中读取所要连接数据库的信息。当需要更改连接的数据库时,只需要更改配置文件即可,而不必改写工具类的代码。

1.在项目中创建一个properties文件,properties文件中的配置文件如下:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/TestDB?useUnicode=true&characterEncoding=utf8&useSSL=false

jdbc.username=root

jdbc.password=123456

复制代码

2.新建一个数据库DBUtil工具类

package com.sdl.dbutil;

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;

/*

* 通过读取Properties连接数据库

*/

public class DBUtil {

private static String driver;

private static String url;

private static String username;

private static String password;

/**

* 静态代码块加载配置文件信息

*/

static {

try {

// 1.通过当前类获取类加载器

ClassLoader classLoader = DBUtil.class.getClassLoader();

// 2.通过类加载器的方法获得一个输入流

InputStream in = classLoader.getResourceAsStream("jdbc.properties");

// 3.创建一个properties对象(集合)

Properties props = new Properties();

// 4.加载输入流

props.load(in);

// 5.获取相关参数的值

driver = props.getProperty("jdbc.driver");

url = props.getProperty("jdbc.url");

username = props.getProperty("jdbc.username");

password = props.getProperty("jdbc.password");

} catch (IOException e) {

e.printStackTrace();

}

}

//注册并获取数据库连接

public static Connection getConnection() throws Exception{

//1.注册驱动

Class.forName(driver);

//2.获取数据库连接

Connection coon = DriverManager.getConnection(url, username, password);

return coon;

}

/**

* 释放数据库资源

* @param rs

* @param st

* @param co

*/

public static void relase(ResultSet rs, Statement st, Connection co) {

try {

if(rs != null) {

rs.close();

}

if(st != null) {

st.close();

}

if(co != null) {

co.close();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

复制代码

4.测试一下,新建一个测试类DBUtilTest

package com.sdl.dbutil;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class DBUtilTest{

public static void main(String[] args) throws Exception{

Connection coon = DBUtil.getConnection();

//2.书写SQL语句

String sql = "select * from user";

//3.获取SQL语句预编译对象

PreparedStatement ps = coon.prepareStatement(sql);

//4.执行SQL语句

ResultSet rs = ps.executeQuery();

//5.处理结果集

while(rs.next()){

System.out.println(rs.getInt("uid")+" "+rs.getString("username"));

}

//6.释放资源

DBUtil.relase(rs, ps, coon);

}

}

复制代码

5.测试结果

ecc88beaa73f565bd8857fbbb792f589.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【谱聚类算法总结】

前言:以前只是调用过谱聚类算法,我也不懂为什么各家公司都问我一做文字检测的这个算法具体咋整的,没整明白还给我挂了哇擦嘞?讯飞还以这个理由刷本宝,今天一怒把它给整吧清楚了,下次谁再问来!说…

嵌入式的汉字原来是这样显示的?

摘要:LCD是嵌入式常见设备,如何在LCD上显示汉字和英文?矢量字体和点阵字体有何不同?同一个字符为何有多种编码?GB2312、GB18030指什么?他们之间有关系吗?嵌入式设备如何支持多国语言&#xff1f…

查看数据库、表、索引的物理存储情况

在管理、维护数据库时,经常需要查看数据库文件、日志文件所占用的磁盘空间,以及磁盘还剩下的磁盘空间,你可以通过下面几种方面查看数据库文件详细情况:1: 是通过远程连接(或VPN)连接到数据库服务器,直接去查…

Spring简化Java开发_spring如何简化java开发

1、spring简介Spring的主要目的是用来替代更加重量级的企业级的java技术2、spring如何简化java开发1)基于POJO的轻量级和最小侵入性编程;2)通过依赖注入和面向接口实现松耦合;3)基于切面和惯例进行声明式编程;4)通过切面和模板减少样版式代码…

Linux 应用调试神器- ASan

今天有小伙伴跟我他的程序崩溃了要怎么办,刚好我最近做项目使用到这个神器,做应用开发的同学可以看看,可以在C/C上配置使用。不过这仅限于调试,如果你是发布版本,一定要把这个功能关闭。当然,这是我实操的结…

asp.net验证提示美化效果

前段时间做了个ymPrompt提示效果的验证控件,ymPrompt是弹出提示的。弹出提示会增加无畏的鼠标点击动作。前段时间看到园里有位高手写了个纯cssjs的一个效果,我把它和asp.net验证控件结合起来,用这位高手写的效果做为asp.net难控件的提示效果。…

java全栈工程师要求_Java全栈工程师

分布式日志解决方案(ELKKafka)微信登录解决方案微信支付解决方案支付宝支付解决方案微服务持续集成解决方案(Jenkins)Spring Cloud全家桶搭建解决方案分布式事务解解决方案分布式锁解决方案(Redis)微服务网关解决方案(一代Zuul\二代Gateway)微服务集中配置服务解决方案(Config)…

在Linux内核使用Kasan

昨天的文章发出来后,有同学在群里说内核也可以使用这个工具,所以再转发一篇wowo网站的文章,希望对大家有帮助。Linux 应用调试神器- ASan1. 前言KASAN是一个动态检测内存错误的工具。KASAN可以检测全局变量、栈、堆分配的内存发生越界访问等问…

网线有问题?

昨晚网络卡死了。今天换了一条网线。掉包率下降不少。。转载于:https://blog.51cto.com/onlyjoking/398046

跟韦老师聊了一个深夜

自从尚明从韦老师那边离职后,我已经很难得到韦老师的消息了,有时候我也想过去看下他,但是也很难抽的开时间。而且,我们两都挺技术的,如果见面后不知道聊什么,会不会有点尴尬。😄上面那个回复是我…

java面向过程编程怎么写_从面向过程到面向对象,我的编程之路

也许现在新一代的程序员一开始涉足的就是c,C#,Java这类面向对象的语言,如果这样,这篇文章可能得不到他们的认同。 这里,我只想写写我从面向过程到面向对象开发成长中的一些感想而已。我最初学习的语言是basic&#xff…

c#xml操作方法

using System.Xml; //初始化一个xml实例XmlDocument xmlnew XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode rootxml.SelectSingleNode("/root");//获取节点…

急救WINDOWS内存错误

该内存不能为read或written的解决方案 使用Windows操作系统的人有时会遇到这样的错误信息:「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。如果去请教一些「高手」&#xf…

大厂不是铁饭碗

最近的事情有点多前段时间一个以前的朋友,买房找我咨询,问我恒大的房子能不能买,我当时没有给出明确的回复,但是也说了自己的看法。近些年房子越来越贵,我是从15年开始接触房子,不过我从没有想过靠房子来赚…

java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现

这个题目会有多个解法:需要判断n的二进制有几个1first:通过n向右移位&1,如果n的最后为1,那么与1结果为1,(相信大家都会与运算,hashmap就是用与运算)以此来实现,循环判断有多少个1&#xff0…

cesss

件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个转载于:https://blog.51cto.com/wuxh868/402629

python知识点1

1.if __name__ main 的作用 在此函数下的代码,只有当该文件运行的时候才能运行。当前文件如果被当做模块被其他文件导入,该函数下的代码就不会被执行。2.__init__方法在类被实例化之前,先使用__init__方法进行一些初始化操作,如…

java语句中switch_Java中的switch-case语句

在codewar里使用了以下switch-case语句,不熟练出错,所以记录一下。class ArithmeticFunction {public static int arithmetic(int a, int b, String operator) {int result0;switch(operator){case "add":resultab;case "subtract":…

使用valgrind检测内存问题

valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。1valgrind安装可以到官网下载最新的源码包:valgrind官网下载,也可以直接使用 c_utils/debug/valgrind 目录提供的 valgrind-3.13.0.tar.bz2 源码包。首先解压源码包tar xjf valgri…

[转]一个人脸检测器

//本文使用到Emgu.CV库,该库是C#语言对OpenCV的封装,以下是一个列子程序的改正版本。using System; using System.Collections.Generic; using System.Text; using Emgu.CV.Structure; using Emgu.CV;namespace VSL.Plugin.TrackingSystem.SimpleTrackin…