1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。
2. 驱动程序(JDBC driver)
要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。
3.DBMS
4.三者之间的联系
JDBC API调用驱动程序来访问DBMS
ODBC是微软公司建立的一组规范,提供了一组对数据库访问的标准API。
1. ODBC管理器(Administrator)
该程序主要任务是管理安装的ODBC驱动程序和管理数据源。
2. 驱动程序管理器(Driver Manager)
驱动程序管理器的任务是管理ODBC驱动程序,是ODBC中最重要的部件。
3. ODBC 驱动程序
是微软公司提供的,提供了ODBC和数据库之间的接口。
4. 数据源
数据源包含了数据库位置和数据库类型、驱动程序等信息,实际上是一种数据连接的抽象。
5. 各部件之间的关系
应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源建立起ODBC与具体数据库的联系。
在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。
(1)导入包:
这需要你有软件包包含了数据库编程所需的JDBC类。大多数情况下,使用import java.sql.* 就足够了,如下所示:
//STEP 1. Import required packages
import java.sql.*;
(2)加载JDBC驱动程序:
这需要初始化驱动程序,这样就可以打开与数据库的通信信道。以下是代码片段实现这一目标:
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
(3)建立连接:
这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库,如下所示:
//STEP 3: Open a connection
// Database credentials
static final String USER = "username";
static final String PASS = "password";
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
(4)执行一个查询:
这需要使用一个对象类型Statement或PreparedStatement构建,并提交一个SQL语句到数据库。如下:
//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);
如果有一个SQL UPDATE,INSERT或DELETE语句,那么需要下面的代码片段:
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "DELETE FROM Employees";
ResultSet rs = stmt.executeUpdate(sql);
(5)从结果集中提取数据:
这一步是必需的情况下,从数据库中获取数据。可以使用适当的ResultSet.getXXX()方法来检索的数据结果如下:
//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);
}
(6)清理环境:
应该明确地关闭所有的数据库资源,对依赖于JVM的垃圾收集如下:
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
(1)建立数据源
(2)加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(3)建立连接
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");、
JDBC URL 将以 jdbc:odbc 开始:余下 URL 通常是你的数据源名字或数据库系统。
(4)同JDBC方式的(4)(5)(6)相同。
1. jdbc是java通过网络访问db的url连接的方式;odbc是本地建立连接后再使用的方式。
或者说:前者是数据库官方版本,后者是符合规范的通用版本。
2. 驱动不同:JDBC的驱动程序由数据库厂商提供,ODBC驱动程序由微软提供。
3. java中一般采用JDBC连接 或JDBC-ODBC桥连接;java不直接调用ODBC API的原因是 ODBC采用C语言编写, 在移植性、安全性方面有欠缺。
4. JDBC-ODBC桥连接 一般用于本地学习或者局域网内使用;而JDBC方式可实现跨平台移植,适用范围广。
5. JDBC-ODBC桥连接一般用在JDK 5 以前。由于在JDK 5 以前,服务器厂商没有提供JDBC驱动程序,只能采用ODBC桥连接。
连接Access数据库时应该只有JDBC-ODBC桥接方式,没有JDBC方式。
import java.sql.*;
public class dbconn {
static final String DBDriver ="sun.jdbc.odbc.JdbcOdbcDriver";
static final String strConn ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:/apache-tomcat-6.0.45/webapps/site/DB/dataDB.mdb";
static final String DBusername="";
static final String DBpassword="";
Connection conn=null;
ResultSet rs=null;
public static String dbconn() {
String sErr = "";
try {
java.sql.DriverManager.registerDriver((java.sql.Driver)(Class.forName(DBDriver).newInstance()));
}catch (Exception e) {
sErr = e.toString();
}
return (sErr);
}
java.sql.Connection cn() throws SQLException {
return java.sql.DriverManager.getConnection(strConn , DBusername, DBpassword);
}
}
原文:http://www.cnblogs.com/yaochc/p/5745281.html