通过属性配置文件编写JDBC程序

news2024/11/14 22:38:59
package com.bjpowernode.jdbc;

import java.sql.*;
import java.util.ResourceBundle;
/*
编程思想:
    将连接数据库时可变化的4条信息都写到配置文件中,以后需要连接其他数据库的时候,可直接修改配置文件,不用修改java程序。
    这4个信息分别是:driver、url、user、password。
 */

public class 通过属性配置文件编写JDBC程序 {
    public static void main(String[] args) {
        //资源绑定器(db.properties必须省略扩展名)
        ResourceBundle bundle = ResourceBundle.getBundle("resources\\db");
        //通过属性配置文件拿到信息
        String driver = bundle.getString("driver");
        String url = bundle.getString("url");
        String user = bundle.getString("user");
        String password = bundle.getString("password");

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1.注册驱动
            Class.forName(driver);
            //2.获取连接(这里的url、user、password和上行代码的参数driver都来源于属性配置文件)
            conn = DriverManager.getConnection(url,user,password);
            //3.获取数据库操作对象
            stmt = conn.createStatement();
            //4.执行sql语句
            String sql = "select a.ename as '员工',b.ename as '领导' from emp a left join emp b on a.mgr = b.empno";
            rs = stmt.executeQuery(sql);
            //5.处理查询结果集
            while(rs.next()){
                String ename = rs.getString("员工");
                String lname = rs.getString("领导"); //这里是根据查询结果的字段名获取对应值
                System.out.println(ename + "," + lname);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //6.释放资源(注意关闭顺序)
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

                        

                                         属性配置文件在IDEA中目录所处位置

                                                属性配置文件db.properties中的内容 

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

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

相关文章

【LeetCode高频100题-3】冲冲冲(持续更新23.1.22)

文章目录62. 不同路径题意解法1 排列组合解法2 动态规划64. 最小路径和题意解法1 DFS(剪枝也超时)解法2 动态规划62. 不同路径 题意 一道数学题,排列组合/小学奥赛题。动态规划不是一般来解决最值问题的吗,这道题为什么会想到dp…

狂神。JVM入门学习笔记。

JVM学习 JVM常见面试题: 请你谈谈你对jvm的理解?Java8虚拟机和之前的变化更新?什么是OOM?什么是栈溢出StackOverFlowError?怎么分析?jvm的常见调优参数有哪些?内存快照如何抓取?怎么…

【JavaSE】保姆级教程|1万字+10张图学会类与对象--建议收藏

🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛 📜所属专栏:爪洼岛冒险记【从小白到大佬之路】 ✈往期博文回顾: 【爪洼岛冒险记】第5站:多图解,超详细讲解Java中的数组、二维数组…

weston 1: 编译与运行傻瓜教程

sudo apt-get update sudo apt-get upgrade vim ~/.bashrc export WLD$HOME/install export LD_LIBRARY_PATH$WLD/lib export PKG_CONFIG_PATH$PKG_CONFIG_PATH:/home/zzj/install/lib/x86_64-linux-gnu/pkgconfig/ source ~/.bashrc 配置路径 此处根据个人电脑配置路径 …

高级Spring之BeanFactory的实现

Spring 的发展历史较为悠久,因此很多资料还在讲解它较旧的实现,这里出于怀旧的原因,把它们都列出来,供大家参考 DefaultListableBeanFactory,是 BeanFactory 最重要的实现,像控制反转和依赖注入功能&#x…

十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)

目录 1 题目要求 2 代码 2.1 以十进制为媒介(不可行) 2.2 以二进制为媒介 3 可能会遇到的难点 4 结论 5 延伸 5.1 超大数据阶乘 5.2 超大数据加法 5.3 以十进制为媒介的进制转换 1 题目要求 2 代码 2.1 以十进制为媒介&#xf…

【LeetCode】一文吃透回溯算法(附例题)

回溯 DFS 算法深入浅出,一文吃透! 原文同步在:https://github.com/EricPengShuai/Interview/blob/main/algorithm/回溯算法.md 回溯算法 主要参考的是 liweiwei 的总结 0. 概念 回溯法 采用试错的思想,它尝试分步的去解决一个问题…

MATLAB | 如何使用MATLAB绘制韦恩图的高阶版本:upset图

韦恩图随着阶数升高会越来越复杂,当阶数达到7或者以上时几乎没办法绘制: 但是使用upset图却可以比较轻易的绘制: 两种类型图的对应关系: 这期便教大家如何绘制这样的upset图: 教程部分 0 数据准备 数据需要的是0,1矩…

SQL注入现象

package com.bjpowernode.jdbc;import java.sql.*; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; import java.util.Scanner; /*** 如果输入的用户名和密码是下面这样的,就会发生非注册人员登录的情况,叫做SQL注入…

【Java|golang】2287. 重排字符形成目标字符串

给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。 从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。 示例 1: 输入:s “ilovecodingonleetcode”, targ…

go tool pprof与trace的简单使用

pprof pprof是Google的程序采样分析工具,其使用分为,采样和分析。Go 语言内置了pprof。 Go 语言库中有两种方式使用pprof,一种是通过net/http/pprof库,另一种是通过runtime/pprof库。 net/http/pprof的简单使用 引入 _ "n…

【计算机网络】HTTP/HTTPS

HTTP网络协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一 理解网络协议 协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符…

零基础学MySQL(三)-- 对表中数据的增删改【新年快乐】

目录✨一、INSERT 语句(添加表中数据)1.基本语法2.应用案例3.使用细节🎆二、UPDATE 语句(修改表中数据)1.基本语法2.应用案例3.使用细节🎇三、DELETE 语句(删除表中数据)1.基本语法2…

【手写 Vue2.x 源码】第三十七篇 - 组件部分 - 组件的合并

一,前言 上篇,介绍了 Vue.extend 实现,主要涉及以下几个点: Vue.extend 简介;Vue.extend 实现,包括:组件初始化;子类继承父类;修复 constructor 指向问题; …

基于ssm jsp在线教育系统源码

演示视频: 基于ssm jsp在线教育系统源码范围 系统主要目标设计 随着互联网发展,在线教学成为一种支持知识共享,无距离知识交流的一种方式,我们的系统主要完成在线视频观看,在线教学,在线知识交流&#xff0…

虚幻引擎中CityEngine导入资产的自动化替换

在这篇博文中,我们将学习将 ArcGIS CityEngine Datasmith 场景导入虚幻引擎后替换资产的流程。 替换工作流由虚幻引擎的数据资产(可以认为是简单的表格数据)控制。 一旦设置正确,这些数据资产就可以在项目之间共享。 推荐&#x…

This old-style function definition is not preceded by a prototype

文章目录Introwarning 及解决 截屏知其然,却不知其所以然Intro 在 Xcode 14 中随意写了几个C命令行程序,编译运行OK。 但是有以下两种报错: This old-style function definition is not preceded by a prototype This function declaration…

联诚发携手电影《流浪地球2》,让电影特效和场景全面升级!

一万五千年前,一根愈合的人类股骨,标志着人类文明的诞生;一万五千年后,当太阳系将不复存在,人类的团结与勇气将延续文明的火种!新年第一部精彩绝伦的国产科幻大片,大家期待已久的《流浪地球2》终…

动态规划的优化

动态规划的优化 一、空间优化 说明 动态规划空间优化为滚动数组优化,即对于一个多维数组,转移时均是由上一阶段转移来的,则可以将这一维省略,以降低空间复杂度,但要注意转移时的顺序; 例题 0 - 1 背包…

基础算法--背包问题(01背包问题、完全背包问题、多重背包问题、分组背包问题)

文章目录前言01背包问题完全背包问题多重背包问题分组背包问题前言 背包问题:给我们 i 件物品,每件物品都有体积 vi 和权重 wi ,给我们限制条件,让我们选择在背包的容量内,物品达到权重最大 01背包问题 01背包问题描…