zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/evilliu/p/8466328.html
Copyright © 2011-2022 走看看