首页 > 编程语言 >Java从外部配置文件读取参数

Java从外部配置文件读取参数

时间:2024-04-11 15:33:51浏览次数:13  
标签:Java 读取 配置文件 rs try static java null public

1.pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.sgcc</groupId>
   <artifactId>Test</artifactId>
   <version>1.0-SNAPSHOT</version>

   <properties>
       <maven.compiler.source>8</maven.compiler.source>
       <maven.compiler.target>8</maven.compiler.target>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>

   <dependencies>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.23</version>
       </dependency>
   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-shade-plugin</artifactId>
               <version>3.1.0</version>
               <executions>
                   <execution>
                       <phase>package</phase>
                       <goals>
                           <goal>shade</goal>
                       </goals>
                       <configuration>
                           <transformers>
                               <transformer
                                       implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                   <mainClass>com.sgcc.Main</mainClass>
                               </transformer>
                           </transformers>
                       </configuration>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

</project>

 

2.Java 代码

package com.sgcc;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class Main {

   public static String url = null;
   public static  String user = null;
   public static  String password = null;

   public static  String sql = null;

   private  PreparedStatement ps = null;
   private  Connection conn = null;
   private  ResultSet rs = null;

   //获取Connection连接对象的方法,使用static方便之后在其他类中调用
   public  Connection getConn() {
       try {
           String name = "com.mysql.cj.jdbc.Driver";
           Class.forName(name);
           conn = DriverManager.getConnection(url, user, password);//获取连接
       } catch (SQLException | ClassNotFoundException e) {
           e.printStackTrace();
       }
       return conn;
   }

   //关闭资源的方法
   public  void close() {
       if (rs != null) {
           try {
               rs.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
       if (ps != null) {
           try {
               ps.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
       if (conn != null) {
           try {
               conn.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }

   }

   //执行查询,打印结果
   public  void  executesql(){

       Connection myconn = getConn();

       try {
           ps = myconn.prepareStatement(sql);
           rs = ps.executeQuery();
           // 获取结果集的元数据信息
           ResultSetMetaData metaData = rs.getMetaData();
           int columnCount = metaData.getColumnCount();
           // 遍历结果集
           while (rs.next()) {
               // 获取所有列的数据
               StringBuffer sbf = new StringBuffer();
               for(int i=1;i<=columnCount;i++) {
                   String str = rs.getString(i);
                   sbf.append(str + "\t");
               }
               System.out.println(sbf);
           }

       } catch (SQLException throwables) {
           throwables.printStackTrace();
       } finally {
           close();
       }

   }


   public static void main(String[] args) {

       if(args.length == 0){
           System.out.println("ERROR: parameter is null.");
           System.exit(-1);
       }
       //获取配置文件名称
       String  propFile = args[0];

       Properties prop = new Properties();

       // 加载properties文件
       try {
           prop.load(new FileInputStream(propFile));
       } catch (IOException e) {
           throw new RuntimeException(e);
       }
       // 获取属性值
       url = prop.getProperty("database.url").trim();
       user = prop.getProperty("database.user").trim();
       password = prop.getProperty("database.password").trim();
       sql = prop.getProperty("sql").trim();

       //判断连接参数是否为空
       if(url == null || url.equals("")){
           System.out.println("ERROR: database.url is null");
           System.exit(-1);
       }
       if(user == null || user.equals("")){
           System.out.println("ERROR: database.user is null");
           System.exit(-1);
       }
       if(password == null || password.equals("")){
           System.out.println("ERROR: database.password is null");
           System.exit(-1);
       }
       if(sql == null || sql.equals("")){
           System.out.println("ERROR: sql is null");
           System.exit(-1);
       }

       Main  test = new Main();
       test.executesql();


   }
}

 

3.配置文件

创建config.properties,并设置相关信息

database.url=jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC
database.user=root
database.password=Root@1234
sql=select * from test limit 10

 

4.运行程序

java -jar Test-1.0-SNAPSHOT.jar conf.properties

 

标签:Java,读取,配置文件,rs,try,static,java,null,public
From: https://www.cnblogs.com/yeyuzhuanjia/p/18129354

相关文章

  • java+saas模式医院云HIS系统源码Java+Spring+MySQL + MyCat融合BS版电子病历系统,支持
    java+saas模式医院云HIS系统源码Java+Spring+MySQL+MyCat融合BS版电子病历系统,支持电子病历四级云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医......
  • 淘宝详情API接口文档(java)get调用
    淘宝详情API接口是用于获取淘宝商品详细信息的接口,它允许开发者通过发送请求,获取商品的描述、价格、评价等信息。下面是一个关于淘宝详情API接口的示例文档,包括接口地址、请求参数、响应参数等内容。淘宝详情API接口文档一、接口地址https://api-gw.onebound.cn/taobao/item_ge......
  • 三分钟带你“手撕”Java中的类与对象
    目录1.面向对象的初步认识1.1.什么是面向对象?2.什么是类?2.1.认识类2.2.类的定义格式3.类的实例化出对象3.1.什么是实例化,什么是对象?3.2.怎么实例化一个对象?4.总结1.面向对象的初步认识1.1.什么是面向对象?Java是一门面向对象的编程,那什么是面向对象呢?比如:你......
  • JavaScript Array方法汇总
    函数名定义返回值是否改变原数组是否生成新数组push向数组的末尾添加一个或多个元素返回新的数组长度是否pop删除并返回数组的最后一个元素返回数组的最后一个元素是否unshift向数组的开头添加一个或多个元素返回新的数组长度是否shift删除数组的第一项返回第一个元素的值。若......
  • JavaScript String方法汇总
    方法名定义返回值是否改变原字符串是否生成新字符串charAt()查找指定位置的元素返回元素否否concat()连接两个或多个字符串返回连接后的字符串否是indexOf()indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回-1。返回查找到的......
  • 【华为OD】2024年华为OD机试C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客华为OD机试2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100......
  • java 深拷贝与浅拷贝
    在Java中,List是一个接口,常见的实现类有ArrayList和LinkedList。当我们需要复制一个List时,通常有两种方法:浅拷贝和深拷贝。浅拷贝只复制List中的引用,而深拷贝则会复制List中的所有元素。下面我们来看一下如何实现List的深拷贝。假设我们有一个Person类,包含name......
  • Java程序设计教程(第九版)1.4Java编程语言
    目录1.4Java编程语言Java程序注释标识符和保留字空白符1.4Java编程语言ava是第一种能够将编写的程序在Web浏览器中执行的语言Java程序基本结构:注释类(class)的定义方法注释注释应当揭示程序的初衷或意图,注释将被计算机忽略,并不影响程序执行两种注释形式://……(被......
  • Java程序设计教程(第九版)1.3网络
    目录1.3网络网络连接局域网和广域网因特网万维网统一资源定位器1.3网络网络就是将两台或多台计算机连接在一起,以便实现信息交换简单的计算机网络中,有一台用作文件服务器的计算机,用于保存网络用户需要用到的程序和数据网络连接网络连接方式近距离:点对点连接缺点......
  • Java程序设计教程(第九版)第一章计算机系统概述
    目录本章目标1.1计算机处理过程硬件软件数字计算机模拟技术数字技术二进制数1.2硬件组件计算机结构输入/输出设备主存储器和辅助存储器中央处理器本章目标软硬件关系软件类型及用法核心硬件及作用硬件如何协同执行程序、管理数据如何共享信息初解Java程序编......