JDBC API是一个Java API,允许用户访问各种类型表列数据,尤其是存储在关系型数据库中的数据。
执行流程:
1.连接数据源,如:数据库。
2.为数据库传递查询和更新指令。
3.处理数据库响应并返回的结果。
先完成以下设置:
JAVA(JDK)安装
数据库系统的安装(如:MySQL的安装)
注:笔者本篇文章使用的是jdk1.8+MySQL8.0。
除了上诉环境配置外,还需要建立一个数据库。本篇文章创建的数据库:mydb,在这个数据库上创建一张表:tb_user。
建立一个JDBC应用程序,本文以Java连接MySQL为例,分六个步骤进行:
在程序中包含数据库编程所需的JDBC类。大多数情况下可用import java.sql.*
,即包含所有有关sql操作的类。
//第一步:导入包
import java.sql.*;
//加载JDBC(MySQL)驱动程序
Class.forName("com.mysql.jdbc.Driver");
使用DriverManager.getConnection()
方法获取一个数据库连接,赋值给Connection
创建的对象,如下所示:
static final String DB_URL = "jdbc:mysql://localhost/mydb";
static final String USER = "root";
static final String PASSWORD = "root";
Connection conn = null;
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
创建Statement
或PreparedStatement
对象,提交一个查询:
Statement stmt = null;
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name , sex, age FROM tb_user";
ResultSet rs = stmt.executeQuery(sql);
从数据库中获取查询结果中的数据,可以使用合适的ResultSet.getXXX()
的方法来检索数据:
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
int age = rs.getInt("age");
//打印数据
System.out.println("ID: "+ id +",NAME: "+name + ",SEX: " + sex +",AGE: "+age);
在使用JDBC与数据交互操作数据库后,应明确关闭所有数据库资源以减少资源的浪费:
rs.close();
stmt.close();
conn.close();
package jdbctest;
//第一步:导入包
import java.sql.*;
public class QueryTest {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC";
static final String USER = "root";
static final String PASSWORD = "root";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//第二步:加载JDBC(MySQL)驱动程序
Class.forName("com.mysql.jdbc.Driver");
//第三步:获取数据库连接
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name , sex, age FROM tb_user";
//第四步:执行查询
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
int age = rs.getInt("age");
//第五步:打印数据
System.out.println("ID: "+ id +",NAME: "+name + ",SEX: " + sex +",AGE: "+age);
}
//第六步:关闭资源
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}