JDBC连接数据库的方式

一般性连接

第一步加载驱动: Class.forName,这是利用反射机制让JVM去查找加载指定的类。在加载数据库驱动包的时候,经常使用。
第二步是建立连接,当驱动加载完成之后,就可以用驱动管理器进行连接,连接的时候需要输入用户名,密码和数据库的路径。
这样,Java程序就和数据库建立了连接了。

然后用Dao模式面向接口编程进行业务的功能设计。
用DaoImplements进行功能的实现。
在具体的功能实现当中,如果要用到数据库。
一般情况下就是增删改查的操作。
这里头都会涉及到几个对象。
用Connection对象来建立和数据库的连接,当然是调用的JDBC当中连接方法。
用Connection对象来创建一个语句对象Statement对象或者是PreparedStatement对象。两者的区别是,PreparedStatement是绑定变量的。
然后创建一个sql语句。
然后用Statement对象调用方法来执行sql语句。

从业务上来讲,增删改查操作当中。
添加和修改这些操作一般是需要绑定变量的,用的PreparedStatement。
查询和删除这些操作一般是不需要绑定变量的,用的是Statement。

public class JDBCUtil {

    private static final String className="com.mysql.jdbc.Driver";
    private static final String url="jdbc:mysql://localhost:3306/lingyao";
    private static final String user="root";
    private static final String password="123456";
    private Connection con=null;

    static{

        try {
            Class.forName(className);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection(){

        try {
            con=DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
}

通过配置文件

一般性连接当中,其实就是分了两步。
一个就是加载驱动。
一个就是建立连接。
通过配置文件跟数据库建立连接的方式,是下面的方式。
第一步,就是建立配置文件。
第二步,线程–>类加载器–>获取文件流
第三步,用Properties对象加载文件流。
第四步,获取配置文件当中的各个字段。

然后还是一般性的连接方式,驱动–>连接。

所以,两种连接方式的区别就是在:
驱动类,数据库路径,数据库用户名,数据库密码这些字段
1.在一般性连接当中,是用变量存储在程序当中。
2.将字段存储在配置文件当中。

配置文件的名字是: config.properties;
把className,url,user,password这些字段都添加到配置文件当中。
然后当连接的数据库需要修改的时候,就只需要在配置文件当中修改就可以了。

public class JDBCUtil2 {

    /**
     * 如果出现乱码  就在配置文件中的url 属性值之后添加
     * 
     * ?useUnicode=true&characterEncoding=UTF8
     */
    //获取文件路径 
    private static final String config="config.properties";
    //建立对象
    private static Properties por=new Properties();

    static{

        try {
            InputStream input=

                Thread.currentThread().getContextClassLoader().getResourceAsStream(config);

            por.load(input);

            Class.forName(por.getProperty("className"));

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection(){

        try {
            return DriverManager.getConnection(por.getProperty("url"), por.getProperty("user"), por.getProperty("password"));
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值