Java基础—JDBC访问数据库

    xiaoxiao2021-03-25  113

    **

    Java基础—JDBC访问数据库

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

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

    转载请注明原文地址: https://ju.6miu.com/read-21705.html

    最新回复(0)