zoukankan      html  css  js  c++  java
  • JAVA-JDBC-Properties配置文件形式操作数据库

    开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。

    通常情况下,我们习惯使用properties文件,此文件我们将做如下要求:

    1. 文件位置:任意,建议src下
    2. 文件名称:任意,扩展名为properties
    3. 文件内容:一行一组数据,格式是“key=value”.

    a)         key命名自定义,如果是多个单词,习惯使用点分隔。例如:jdbc.driver

    b)        value值不支持中文,如果需要使用非英文字符,将进行unicode转换。

    1、src目录下创建Properties文件

     2、对应properties文件处理,开发中也使用Properties对象进行。我们将采用加载properties文件获得流,然后使用Properties对象进行处理。

    package cn.bruce.Properties;
    
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.Reader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;
    
    //开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。
    //通常情况下,我们习惯使用properties文件,此文件我们将做如下要求:
    //1.    文件位置:任意,建议src下
    //2.    文件名称:任意,扩展名为properties
    //3.    文件内容:一行一组数据,格式是“key=value”.
    
    public class JDBCUtils {
        private static String driverClass, url, usename, password;
        private static Connection con;
        // 静态代码块只执行一次
        static
        {
            try
            {
                con();
    //            con1();
                Class.forName(driverClass);
                con = DriverManager.getConnection(url, usename, password);
            } catch (Exception e)
            {
                e.printStackTrace();
                throw new RuntimeException("数据库连接失败!");
            }
        }
    
        public static Connection getcon() {
            return con;
        }
    
        // 1、第一种方法 input流+load(InputStream)
        //这种方法可以不在项目根目录建立properties文件  只在SRC目录下建立
        private static void con() throws IOException {
            Properties pro = new Properties();
            InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("database.properties");
            pro.load(in);
            driverClass = pro.getProperty("driverClass");
            url = pro.getProperty("url");
            usename = pro.getProperty("usename");
            password = pro.getProperty("password");
        }
    
        // 第二种方法
        // 1 使用Properties处理流
        // 使用load()方法加载指定的流
        //在项目跟目录下,创建文件,输入“db.properties”文件名。
        private static void con1() throws Exception {
            Properties po = new Properties();
            Reader r = new FileReader("database.properties");
            po.load(r);
            driverClass = po.getProperty("driverClass");
            url = po.getProperty("url");
            usename = po.getProperty("usename");
            password = po.getProperty("password");
        }
    }

    3、测试

    package cn.bruce.Properties;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class JDBCUtilsTest {
        public static void main(String[] args) {
            Connection connection = JDBCUtils.getcon();
            System.out.println(connection);
            try
            {
                PreparedStatement ps = connection.prepareStatement("select * from users;");
                ResultSet rs = ps.executeQuery();
                while (rs.next())
                {
                    System.out.println(rs.getString("zusename") + "  " + rs.getString("zpassword"));
                }
            } catch (Exception e)
            {
                e.printStackTrace();
            }
    
        }
    }

  • 相关阅读:
    字体图标的制作
    vs code 本地调试配置
    瀑布流
    web组件化开发第一天
    超时调用和间歇调用
    递归 闭包
    继承
    面向对象的程序设计
    function类型
    Date类型
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13755591.html
Copyright © 2011-2022 走看看