• JDBC通过配置文件(properites)读取数据库配置信息


    扫盲:

    Classloader 类加载器,用来加载 Java 类到 Java 虚拟机中。与普通程序不同的是。Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。

    JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现的,它负责加载核心JavaClass(即所有java.*开头的类)。另外JVM还会提供两个ClassLoader,它们都是用Java语言编写的,由BootstrapClassLoader加载;其中Extension ClassLoader负责加载扩展的Javaclass(例如所有javax.*开头的类和存放在JRE的ext目录下的类),ApplicationClassLoader负责加载应用程序自身的类。

    当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。

    一:工具类

     1 package Jdbc_Test;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.sql.Connection;
     6 import java.sql.DriverManager;
     7 import java.sql.ResultSet;
     8 import java.sql.Statement;
     9 import java.util.Properties;
    10 
    11 public class jdbcutils {
    12     private jdbcutils(){};
    13     private static  Connection con;
    14     public  static  void  main(String[] args)throws IOException{
    15 
    16 
    17     }
    18     public  static Connection getCon(){
    19         /*
    20         通过读取properites配置文件来获取数据库连接信息。
    21         通过类加载器,读取当前父目录的配置文件。通过class.getClassLoader方法getResourceAstream获取配置文件的
    22         内容,然后通过IO流处理properites文件获取对应的key值。
    23         配置文件便于灵活配置数据库信息。
    24          */
    25         InputStream inp=jdbcutils.class.getClassLoader().getResourceAsStream("database.properties");
    26         Properties  pro=new Properties();
    27         try {
    28             pro.load(inp);
    29         }catch (Exception ex){
    30             throw new  RuntimeException(ex+"读取配置文件失败!");
    31         }
    32         try {
    33             String Drverclass = pro.getProperty("Driver.class");
    34             String url = pro.getProperty("Url");
    35             String username = pro.getProperty("username");
    36             String password = pro.getProperty("password");
    37             Class.forName(Drverclass);
    38             con = DriverManager.getConnection(url, username, password);
    39         }catch (Exception ex){
    40             throw  new RuntimeException(ex+"数据库连接失败!");
    41         }
    42         return con;
    43     }
    44     public  static void cls_re(Connection con, Statement sta, ResultSet re){
    45         if(con!=null){
    46             try{
    47                 con.close();
    48             }catch (Exception ex){}
    49         }
    50         if(sta!=null){
    51             try{
    52                 sta.close();
    53             }catch (Exception ex){}
    54         }
    55         if(re!=null){
    56             try{
    57                 re.close();
    58             }catch (Exception ex){}
    59         }
    60 
    61     }
    62     public  static void cls_re(Connection con, Statement sta){
    63         if(con!=null){
    64             try{
    65                 con.close();
    66             }catch (Exception ex){}
    67         }
    68         if(sta!=null){
    69             try{
    70                 sta.close();
    71             }catch (Exception ex){}
    72         }
    73 
    74     }
    75 }

     二:测试代码:

     1 package Jdbc_Test;
     2 
     3 import java.sql.Connection;
     4 import java.sql.PreparedStatement;
     5 import java.sql.ResultSet;
     6 import java.util.ArrayList;
     7 import java.util.List;
     8 
     9 public class jdbc_test {
    10     public  static  void  main(String... args)throws Exception{
    11         Connection con =jdbcutils.getCon();
    12         PreparedStatement pre=con.prepareStatement("select * from system_user");
    13         ResultSet re=pre.executeQuery();
    14         List <Sys_User>  lis =new ArrayList<Sys_User>();
    15         while (re.next()){
    16             Sys_User sys=new Sys_User(re.getString("username"),re.getString("password"));
    17             lis.add(sys);
    18         }
    19         System.out.print(lis);
    20     }
    21 }
    22 class  Sys_User{
    23     private String username;
    24     private String password;
    25     public   Sys_User(String username ,String password){
    26         this.username=username;
    27         this.password=password;
    28     }
    29 
    30     @Override
    31     public String toString() {
    32         String  info=this.username+" "+this.password;
    33         return info;
    34     }
    35 } 

    properites配置文件:

    1 Driver.class=com.mysql.jdbc.Driver
    2 Url=jdbc:mysql://192.168.147.146:3306/homework_day13
    3 username=test
    4 password=123456

    需要注意配置文件中不能有双引号 !

  • 相关阅读:
    3 分钟创建 Serverless Job 定时获取新闻热搜!
    阿里云解决方案架构师张平:云原生数字化安全生产的体系建设
    私有化输出的服务网格我们是这样做的
    Kruise Rollout:灵活可插拔的渐进式发布框架
    新零售标杆 SKG 全面拥抱 Serverless,实现敏捷交付
    注册配置、微服务治理、云原生网关三箭齐发,阿里云 MSE 持续升级
    共建共享数字世界的根:阿里云打造全面的云原生开源生态
    OpenYurt 邀你共赴 2022 EdgeX 中国挑战赛!
    How to Resolve ORA29760: instance_number parameter not specified
    Linux之NFS
  • 原文地址:https://www.cnblogs.com/evilliu/p/8466328.html
Copyright © 2020-2023  润新知