在大多数企业信息化系统中都需要将数据存储至数据库中,并从数据库中获取数据进行分析和处理,因此数据库的连接就成为了实现这一目的的一项核心技术。而Java JDBC连接数据库就是其中比较常用的一种方式。
一、JDBC介绍
Java JDBC是Java数据库连接技术(Java Database Connectivity)的简称,通过Java JDBC技术,Java程序可以利用标准SQL语言来读取和操作数据库。Java中的JDBC封装了底层数据库的访问,不需要知道具体的数据库类型,通过JDBC通用的接口方式访问。Java开发人员可以使用Java JDBC来访问和处理MySQL、Oracle、SQL Server和DB2等不同类型的数据库,而无需了解底层的差异性。
JDBC包括两个组成部分:
一是JDBC API,即Java JDBC接口,主要由Java接口的形式提供给应用程序使用;
二是JDBC驱动程序,即Java JDBC驱动程序,实现JDBC API中所定义的接口来连接数据库。因此无论是何种类型的数据库,在Java程序中通过JDBC API编写连接操作,都需要相应的JDBC驱动程序对其进行支持。
二、JDBC连接数据库实现
Java JDBC连接数据库的实现基本上包括以下几个步骤:
1. 加载驱动程序
在Java程序中,要想连接数据库首先需要加载适当的数据库驱动程序。针对不同的数据库需要使用不同的数据库驱动程序,例如,MySQL使用com.mysql.jdbc.Driver类,Oracle使用oracle.jdbc.driver.OracleDriver类,SQL Server使用com.microsoft.sqlserver.jdbc.SQLServerDriver类,DB2使用com.ibm.db2.jcc.DB2Driver类等。在JDBC4.0规范之后,JVM已经自动加载了所有的jdbc驱动程序,因此只需要加载相应的驱动即可。
加载驱动程序的代码示例:
Class.forName("com.mysql.jdbc.Driver");
2. 建立数据库连接
加载驱动程序后,要进行数据库连接。通过DriverManager的getConnection()方法建立与数据库的连接,getConnection()方法需要两个参数,一个是数据库URL,另一个是用户名和密码。例如,当连接MySQL数据库时,URL格式如下:
jdbc:mysql://hostname:port/databaseName?user=username&password=password
(1)hostname: MySQL服务器地址;
(2)port: MySQL服务器端口,默认值是3306;
(3)databaseName:数据库名称;
(4)username:连接数据库的用户名;
(5)password:连接数据库的密码。
建立与数据库连接的代码示例:
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
3. 创建Statement
建立了数据库连接之后,需要创建Statement对象,使用Statement对象可以向数据库发送SQL语句和命令。在创建Statement对象时,可以设置一些执行参数,例如Statement.RETURN_GENERATED_KEYS,用于返回自动产生的键值。
创建Statement的代码示例:
Statement stmt = conn.createStatement();
4. 使用Statement执行SQL语句
创建了Statement对象之后,即可使用execute()方法来执行SQL语句,execute()方法返回true或false。通过executeUpdate()方法执行SQL语句时,可以执行Insert、Update、Delete等操作,并返回受影响的记录行数。通过executeQuery()方法执行SQL查询语句,返回一个ResultSet对象,ResultSet对象包含了查询结果集的数据。
使用Statement执行SQL语句的代码示例:
String sql = "SELECT * FROM student";
ResultSet rs = stmt.executeQuery(sql);
5. 处理数据
通过executeQuery()方法获得ResultSet对象之后,即可使用ResultSet对象中的方法来处理数据库中的数据,例如,使用getString(int colIndex)方法获取字符串类型的数据,getInt(int colIndex)方法获取整型数据,getDouble(int colIndex)方法获取浮点型数据等等。
处理数据的代码示例:
while(rs.next()){
String name = rs.getString("name");
int age = rs.getInt("age");
double grade = rs.getDouble("grade");
}
6. 关闭数据库连接
在数据操作完成之后,应该关闭数据库连接,释放相关的资源,防止内存泄漏。关闭资源时,要保证先关闭ResultSet、再关闭Statement、最后关闭Connection。
关闭数据库连接的代码示例:
rs.close();
stmt.close();
conn.close();
三、JDBC连接MySQL数据库
MySQL数据库是比较流行的开源关系型数据库,由于其开源优势和轻量化的特点,成被许多企业和开发者使用。下面以JDBC连接MySQL数据库为例,来演示如何进行实现。
1、在Java项目中的Libraries中添加MySQL JDBC的JAR包,即mysql-connector-java-5.1.38-bin.jar。
2、加载驱动程序:加载MySQL的JDBC驱动程序,运行以下代码:
Class.forName("com.mysql.jdbc.Driver");
3、建立数据库连接:建立与MySQL数据库的连接,运行以下代码:
String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
String USERNAME = "root";
String PASSWORD = "123456";
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
4、创建Statement:通过Connection对象来创建Statement对象,运行以下代码:
Statement stmt = conn.createStatement();
5、执行SQL查询:使用Statement对象执行SQL查询语句,运行以下代码:
String sql = "SELECT * FROM student";
ResultSet rs = stmt.executeQuery(sql);
6、处理查询结果数据:从ResultSet对象中获取查询结果数据,运行以下代码:
while(rs.next()){
String name = rs.getString("name");
int age = rs.getInt("age");
double grade = rs.getDouble("grade");
System.out.println(name + "\t" + age + "\t" + grade);
}
7、关闭连接:关闭ResultSet、Statement和Connection连接,运行以下代码:
rs.close();
stmt.close();
conn.close();
四、总结
JDBC连接数据库是Java开发人员必备的技术之一,通过JDBC可以连接多种类型的数据库此外JDBC还支持对数据库的读取、更新和操作,极大地简化了程序员对数据库的操作。在使用JDBC时需要先加载相应的JDBC驱动,再通过Connection对象建立数据库连接,使用Statement对象进行SQL语句的执行和数据的查询,最后关闭ResultSet、Statement和Connection连接,保证程序的稳定性和安全性。