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

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

原文地址:https://www.cnblogs.com/evilliu/p/8466328.html