Java基础—JDBC访问数据库

**

Java基础—JDBC访问数据库

**
JDBC,全称Java DataBase Connectivity。它提供各种方法,包括访问数据库、执行sql语句等。这些操作数据库的类都在java.sql包中,下面是通过JDBC链接数据库的一些步骤。

  1. 加载JDBC驱动器。其实也就是咱们通常说的一些jar包,这些包一般在数据库的官网可以找到,Java官网也有的,一般5/6个左右,直接加到项目中的classpath中皆可以了,一般在项目中的WEB-INF/lib目录下。(找不到的联系我,我可以发给你,,我后续会上传到CSDN的)
  2. 加载JDBC驱动,并将其注册到DriverManager中。一般通过反射来注册,大概的语法是Class.forName(String driveName)。(反射是加载类的一种方式,具体的实现机制我会在接下来的博客中提到,关于Java源码部分的。)
  3. 建立数据库链接,取得Connection对象。一般的方法是DriverManager.getConnection(url,username,passwd)方法实现,URL表示衔接数据库的字符串,username是数据库的用户名,passwd是数据库的密码。
  4. 建立Statement或者是PreparedStatement对象。
  5. 执行sql语句
  6. 访问结果集ResultSet对象。
  7. 将上述的对象通过.close()方法关闭,因为JDBC驱动在底层是通过网络IO实现SQL命令与数据传输的。

这是使用JDBC的一个思路,其实在真正的项目中,并不可能每次访问都写一遍这些过程,一般放在一个工具类中,使用的时候直接调用。下面粘贴上我一般使用的JDBC工具类。

package com.neu.mvc.dao.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

//SessionFactory必须是单例模式
public class SessionFactorytemp {
    private static SessionFactorytemp sessionFactory = new SessionFactorytemp();

    private SessionFactorytemp() {
    }

    public static SessionFactorytemp getInstance() {
        return sessionFactory;
    }

    public Connection getSession() throws Exception {
        // 0_1 通过属性文件加载相关配置信息
        Properties props = new Properties();
        InputStream in = SessionFactorytemp.class.getClassLoader()
                .getResourceAsStream("db.properties");
        props.load(in);
        in.close();
        // 1-加载驱动
        Class.forName(props.getProperty("jdbc.DBDriver"));
        // 2-根据url,username,password连接数据库
        String url = props.getProperty("jdbc.url");
        String username = props.getProperty("jdbc.username");
        String password = props.getProperty("jdbc.password");
        Connection con = DriverManager.getConnection(url, username, password);
        // 3-返回连接
        return con;
    }

    public void close(ResultSet rs, Statement ps, Connection con)
            throws Exception {
        if (rs != null)
            rs.close();
        if (ps != null)
            ps.close();
        if (con != null)
            con.close();
    }
}

上面是普通的通过JDBC连接数据库的工具类,封装在一个类中,调用的时候更加方便。但是在项目中我们还可能使用连接池(不懂得自行百度),使用连接池的话上面的类就需要改变了。
我一般使用的是c3p0连接池,下面粘贴c3p0连接池的工具类,不过要想真正的使用c3p0连接池还是创建配置文件以及相应的驱动,也就是jar包。这个工具类用到了单例模式哦。

package com.neu.mvc.dao.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//SessionFactory必须是单例模式
public class SessionFactory {
    //单例模式
    private static SessionFactory sessionFactory = new SessionFactory();
    private SessionFactory() {
        cpds = new ComboPooledDataSource("java_C3P0");
    }
    public static SessionFactory getInstance() {
        return sessionFactory;
    }
    //配置数据源连接池C3P0
    private ComboPooledDataSource cpds;
    //从连接池中获得连接

    public Connection getSession() throws Exception {
         System.out.println("连接池信息:" + cpds);
         return cpds.getConnection();
    }

    public void close(ResultSet rs, Statement ps, Connection con)
            throws Exception {
        if (rs != null)
            rs.close();
        if (ps != null)
            ps.close();
        if (con != null)
            con.close();
    }
}

算了,还是把配置文件也粘贴上吧。。。。。。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
       <named-config name="java_C3P0">
            <!-- 实现连接池与数据库的连接,从而可以将数据库的con对象放入连接池 -->
              <property name="user">liang</property>
              <property name="password">tiger</property>
              <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
              <property name="jdbcUrl">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</property>
            <!-- 对Connection对象在连接池中的数量进行配置 -->
              <property name="initialPoolSize">10</property>
              <property name="minPoolSize">10</property>
              <property name="maxPoolSize">50</property>
              <property name="acquireIncrement">10</property>
             <!-- 对PreparedStatement对象及Statement对象在连接池中的数量进行配置 -->
              <property name="maxStatements">20</property>
              <property name="maxStatementsPerConnection">5</property>
       </named-config>
</c3p0-config>

最后,如果配置c3p0连接池,千万不要忘了jar包啊!!
不明白的可以欢迎通过CSDN里的连接方式联系我。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值