1.JDBC,它是一个面向对象的应用程序接口(API), 经过它可访问各种关系数据库。 java
2. 驱动程序(JDBC driver)mysql
要经过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它每每是由生产数据库的厂家提供,是链接JDBC API与具体数据库之间的桥梁。web
3.DBMSsql
4.三者之间的联系数据库
JDBC API调用驱动程序来访问DBMS apache
ODBC是微软公司创建的一组规范,提供了一组对数据库访问的标准API。编程
1. ODBC管理器(Administrator)tomcat
该程序主要任务是管理安装的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);
}
}