一、是什么?
JDBC代表java数据库连接(java database connectivity),它是用于java编程语言和数据库之间的数据库无关的标准java API。
JDBC是一个规范,他提供了一整套接口,允许以一种可移植的访问底层数据库API。java可以用他来编写不同类型的可执行文件。比如: java应用程序,java applet,javaservlet,jsp ,ejb .
上述这些不同的可执行文件都能使用JDBC驱动程序来访问数据库,并用于存储数据到数据库中。
JDBC提供与ODBC相同的功能,允许java程序包含与数据库无关的代码。相同的代码,只需要指定使用的数据库类型,不需要重新修改数据库查询或操作代码。
1.1 包括如下API:
-
连接到数据库
-
创建sql或mysql语句
-
在数据库中执行sql或mysql查询
-
查看和修改结果记录
1.2架构
主要包括2部分:
1、 JDBC API:
提供应用程序到JDBC管理器连接。使用驱动程序管理器并指定数据库的驱动程序来提供与异构数据库的透明连接。
2、JDBC驱动程序API:
支持JDBC管理器到驱动程序连接。 保证正确的驱动程序来访问每个数据源,驱动程序管理器能够支持连接到多个异构数据库的多个并发驱动程序。
1.3常见的组件
API 中提供了以下接口和类:
DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。
Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它还提取与使用Driver对象相关的信息。
Connection:此接口具有用于联系数据库的所有方法。 连接(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。
Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。
ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。
SQLException:此类处理数据库应用程序中发生的任何错误。
1.4 使用示范
导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用
import java.sql.*
就足够了。
注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的通信通道。
打开一个连接:需要使用
DriverManager.getConnection()
方法创建一个Connection
对象,它表示与数据库的物理连接。
执行查询:需要使用类型为
Statement
的对象来构建和提交SQL语句到数据库。
从结果集中提取数据:需要使用相应的
ResultSet.getXXX()
方法从结果集中检索数据。
清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。
//STEP 1. Import required packages
import java.sql.*;
public class FirstExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/emp";
// Database credentials
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("There are so thing wrong!");
}//end main
}//end FirstExample
1.5 驱动程序类型
类型1:JDBC-ODBC桥驱动程序
类型2:JDBC本地API
类型3:JDBC-Net纯Java
类型4:100%纯Java
1.6 语句类型
CallableStatement
|
当想要访问数据库存储过程时使用。 CallableStatement 接口也可以接受运行时输入参数。
|