1.基础概念
JDBC API是一个Java API可以访问任何类型的数据库的数据,尤其是存储在关系数据库中的数据。 JDBC的工作原理与Java在各种平台一样,如Windows,Mac OS和各种版本的UNIX系统。
从根本上说,JDBC是一种规范,它提供的接口,一套完整的,可移植的访问底层数据库的程序。可以用Java来写不同类型的可执行文件,如:
- Java应用程序
- Java Applets
- Java Servlets
- Java ServerPages (JSP)
- Enterprise JavaBeans (EJBs)
所有这些不同的可执行文件就可以使用JDBC驱动程序来访问数据库,并把存储的数据的优势。
JDBC提供了与ODBC相同的功能,允许Java程序包含与数据库无关的代码。
2.JDBC架构
JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
- JDBC API: 提供了应用程序对JDBC的管理连接。
- JDBC Driver API: 支持JDBC管理到驱动器连接。
- JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。
- JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。
3.JDBC API提供了以下接口和类:
-
DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
-
Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用
DriverManager
中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息 -
Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。
-
Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
-
ResultSet: 这些对象保存从数据库后,执行使用
Statement
对象的SQL查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。 -
SQLException: 这个类用于处理发生在数据库应用程序中的任何错误
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 使用Java方式连接和关闭数据库
* @author Julyqiao
* */
public class Test1 {
public static void main(String[] args){
Connection conn = null;
//1.加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2.建立连接
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/epet","epetAdmin","1234");
System.out.println("建立连接成功!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//3.关闭连接
try {
if(conn != null){
conn.close();
System.out.println("关闭连接成功!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test2 {
/**
* @param args
*/
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/petshop";
// 数据库名和密码自己修改
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
java.sql.Statement stmt = null;
try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.建立连接
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//3.执行一个查询
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name, age FROM petInfo";
ResultSet rs = stmt.executeQuery(sql);
//4: 从结果节中提取数据
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
//显示值
System.out.print("ID: " + id);
System.out.print(",Name: " + name);
System.out.print(", 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();
}
}
System.out.println("Goodbye!");
}
}