JDBCTM 指南:入门

合集下载

jdbc基本使用步骤_概述及解释说明

jdbc基本使用步骤_概述及解释说明

jdbc基本使用步骤概述及解释说明1. 引言1.1 概述在开发数据库应用程序时,我们经常需要与数据库进行交互。

Java Database Connectivity(JDBC)是Java平台提供的一种标准API,它允许我们通过Java 程序连接和操作各种类型的数据库。

JDBC提供了一组接口和类,使得开发者可以很方便地执行SQL语句、访问和更新数据库中的数据。

本文将介绍JDBC的基本使用步骤,并对每个步骤进行详细解释说明,旨在帮助读者快速入门并掌握JDBC编程技巧。

1.2 文章结构本文共分为五个部分,具体内容如下:第一部分是引言部分,在这部分中我们将对文章的整体内容进行概要介绍,并说明本文的目的和意义。

第二部分是JDBC基本使用步骤,包括连接数据库的准备工作、加载JDBC驱动程序以及建立数据库连接等。

第三部分是JDBC基本操作示例,我们将通过插入数据、查询数据和更新数据等示例来演示JDBC的基本操作。

第四部分是关于JDBC异常处理和事务管理的内容,我们将介绍异常处理机制、事务管理概念及其使用方法,并探讨数据库连接池在实际应用中的使用场景和优势。

最后一部分是结论部分,我们将总结文章的内容与意义,并进一步探讨JDBC在实际应用中的价值与局限性,展望未来JDBC的发展方向或相关趋势。

1.3 目的本文旨在帮助读者全面了解和掌握JDBC的基本使用步骤。

通过清晰地介绍每个步骤的具体操作和相关概念,读者可以学会如何连接数据库、执行SQL语句以及处理异常和事务等常见操作。

文章还将探讨JDBC在实际应用中的价值与局限性,并对未来JDBC的发展趋势进行展望,使读者能够更好地利用JDBC技术开发高效、稳定的数据库应用程序。

2. JDBC基本使用步骤:2.1 连接数据库的准备工作:在进行JDBC操作之前,需要确保以下几个方面的准备工作:- 确保已经安装了适当的数据库服务器,并且运行正常。

- 确认数据库服务器的连接地址、端口号以及数据库名称等信息。

JDBC入门入门入门入门

JDBC入门入门入门入门

第20章•JDBC入門–使用JDBC連接資料庫–使用JDBC進行資料操作簡介JDBC簡介JDBC•JDBC資料庫驅動程式依實作方式可以分為四個類型–Type 1:JDBC-ODBC Bridge–Type 2:Native-API Bridge–Type 3:JDBC-middleware–Type 4:Pure Java Driver連接資料庫•載入JDBC驅動程式try {Class.forName("com.mysql.jdbc.Driver");}catch(ClassNotFoundException e) {System.out.println("找不到驅動程式類別");}連接資料庫•提供JDBC URL–協定:子協定:資料來源識別jdbc:mysql://主機名稱:連接埠/資料庫名稱?參數=值&參數=值jdbc:mysql://localhost:3306/demo?user=root&password=123 jdbc:mysql://localhost:3306/demo?user=root&password=123& useUnicode=true&characterEncoding=Big5連接資料庫•取得Connectiontry {String url= "jdbc:mysql://localhost:3306/demo?" +"user=root&password=123";Connection conn= DriverManager.getConnection(url);....}catch(SQLException e) {....}String url= "jdbc:mysql://localhost:3306/demo";String user = "root";String password = "123";Connection conn= DriverManager.getConnection(url,user, password);簡單的Connection工具類別•取得Connection的方式,依所使用的環境及程式需求而有所不同•設計一個DBSource介面package onlyfun.caterpillar;import java.sql.Connection;import java.sql.SQLException;public interface DBSource{public Connection getConnection() throws SQLException;public void closeConnection(Connection conn) throws SQLException; }簡單的Connection工具類別public class SimpleDBSource implements DBSource{…public SimpleDBSource(String configFile) throws IOException,ClassNotFoundException{ props = new Properties();props.load(new FileInputStream(configFile));url= props.getProperty("onlyfun.caterpillar.url");user = props.getProperty("er");passwd= props.getProperty("onlyfun.caterpillar.password");Class.forName(props.getProperty("onlyfun.caterpillar.driver"));}public Connection getConnection() throws SQLException{return DriverManager.getConnection(url, user, passwd);}public void closeConnection(Connection conn) throws SQLException{ conn.close();}}簡單的Connection工具類別onlyfun.caterpillar.driver=com.mysql.jdbc.Driver onlyfun.caterpillar.url=jdbc:mysql://localhost:3306/demo er=rootonlyfun.caterpillar.password=123456DBSource dbsource= new SimpleDBSource();Connection conn= dbsource.getConnection();if(!conn.isClosed()) {System.out.println("資料庫連接已開啟…");}dbsource.closeConnection(conn);if(conn.isClosed()) {System.out.println("資料庫連接已關閉…");}簡單的連接池(Connection pool)•資料庫連接的取得是一個耗費時間與資源的動作–建立Socket connection–交換資料(使用者密碼驗證、相關參數)–資料庫初始會話(Session)–日誌(Logging)–分配行程(Process)–…簡單的連接池(Connection pool)public synchronized Connection getConnection()throws SQLException{ if(connections.size() == 0) {return DriverManager.getConnection(url, user, passwd);}else {int lastIndex= connections.size() -1;return connections.remove(lastIndex);}}public synchronized void closeConnection(Connection conn)throws SQLException{ if(connections.size() == max) {conn.close();}else {connections.add(conn);}}簡單的連接池(Connection pool)DBSource dbsource= new BasicDBSource("jdbc2.properties"); Connection conn1 = dbsource.getConnection();dbsource.closeConnection(conn1);Connection conn2 = dbsource.getConnection();System.out.println(conn1 == conn2);onlyfun.caterpillar.driver=com.mysql.jdbc.Driveronlyfun.caterpillar.url=jdbc:mysql://localhost:3306/demo er=rootonlyfun.caterpillar.password=123456onlyfun.caterpillar.poolmax=10簡單的連接池(Connection pool)•初始的Connection數量•Connection最大idle的數量•如果超過多久時間,要回收多少數量的Connection•Proxool–/index.html •Apache Jakarta的Common DBCP –/commons/dbcp/Statement、ResultSet•要執行SQL的話,必須取得java.sql.Statement物件,它是Java當中一個SQL敘述的具體代表物件Statement stmt = conn.createStatement();•插入一筆資料,可以如下使用Statement的executeUpdate()方法stmt.executeUpdate("INSERT INTO t_message VALUES(1, 'justin', " + "'justin@', 'mesage...')");Statement、ResultSet •executeUpdate()會傳回int結果,表示資料變動的筆數•executeQuery()方法則是用於SELECT等查詢資料庫的SQL•executeQuery()會傳回java.sql.ResultSet物件,代表查詢的結果•可以使用ResultSet的next()來移動至下一筆資料,它會傳回true 或false表示是否有下一筆資料•使用getXXX()來取得資料Statement、ResultSet•指定欄位名稱來取得資料ResultSet result =stmt.executeQuery("SELECT* FROM t_message"); while(result.next()) {System.out.print(result.getInt("id") + "\t");System.out.print(result.getString("name") + "\t");System.out.print(result.getString("email") + "\t");System.out.print(result.getString("msg") + "\t");}Statement、ResultSet•使用查詢結果的欄位順序來顯示結果ResultSet result =stmt.executeQuery("SELECT* FROM t_message"); while(result.next()) {System.out.print(result.getInt(1) + "\t");System.out.print(result.getString(2) + "\t");System.out.print(result.getString(3) + "\t");System.out.print(result.getString(4) + "\t");}Statement、ResultSet •Statement的execute()可以用來執行SQL,並可以測試所執行的SQL是執行查詢或是更新•傳回true的話表示SQL執行將傳回ResultSet表示查詢結果,此時可以使用getResultSet()取得ResultSet物件•如果execute()傳回false,表示SQL執行會傳回更新筆數或沒有結果,此時可以使用getUpdateCount()取得更新筆數•如果事先無法得知是進行查詢或是更新,就可以使用execute()Statement、ResultSet finally {if(stmt!= null) {try {stmt.close();}catch(SQLException e) {e.printStackTrace();}}if(conn!= null) {try {dbsource.closeConnection(conn);}catch(SQLException e) {e.printStackTrace();}}}Statement、ResultSet •Connection物件預設為「自動認可」(auto commit)•getAutoCommit()可以測試是否設定為自動認可•無論是否有無執行commit()方法,只要SQL 沒有錯,在關閉Statement或Connection 前,都會執行認可動作PreparedStatement •preparedStatement()方法建立好一個預先編譯(precompile)的SQL語句•當中參數會變動的部份,先指定"?"這個佔位字元PreparedStatement stmt = conn.prepareStatement("INSERT INTO t_message VALUES(?, ?, ?, ?)");PreparedStatement•需要真正指定參數執行時,再使用相對應的setInt()、setString()等方法,指定"?"處真正應該有的參數stmt.setInt(1, 2);stmt.setString(2, "momor");stmt.setString(3, "momor@");stmt.setString(4, "message2...");LOB讀寫•BLOB全名Binary Large Object,用於儲存大量的二進位資料•CLOB全名Character Large Object,用於儲存大量的文字資料•在JDBC中也提供了java.sql.Blob與java.sql.Clob兩個類別分別代表BLOB與CLOB資料LOB讀寫•取得一個檔案,並將之存入資料庫中File file= new File("./logo_phpbb.jpg");int length = (int) file.length();InputStream fin = new FileInputStream(file);// 填入資料庫PreparedStatement pstmt= conn.prepareStatement("INSERT INTO files VALUES(?, ?, ?)");pstmt.setInt(1, 1);pstmt.setString(2, "filename");pstmt.setBinaryStream(3, fin, length);pstmt.executeUpdate();pstmt.clearParameters();pstmt.close();fin.close();LOB讀寫•從資料庫中取得BLOB或CLOB資料Blob blob= result.getBlob(2); // 取得BLOBClob clob= result.getClob(2) // 取得CLOB交易(Transaction)•可以操作Connection的setAutoCommit()方法,給它false引數•在下達一連串的SQL語句後,自行呼叫Connection的commit()來送出變更交易(Transaction)try {…conn.setAutoCommit(false); // 設定auto commit為false stmt = conn.createStatement();stmt.execute("...."); // SQLstmt.execute("....");stmt.execute("....");mit(); // 正確無誤,確定送出}catch(SQLException e) { // 喔喔!在commit()前發生錯誤try {conn.rollback(); // 撤消操作} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}交易(Transaction)•設定儲存點(save point)conn.setAutoCommit(false);Statement stmt = conn.createStatement();stmt.executeUpdate("....");stmt.executeUpdate("....");Savepoint savepoint= conn.setSavepoint(); // 設定save pointstmt.executeUpdate("....");// 如果因故rollbackconn.rollback(savepoint);. . .mit();// 記得釋放save pointstmt.releaseSavepoint(savepoint);批次處理•使用addBatch()方法將要執行的SQL敘述加入,然後執行executeBatch()conn.setAutoCommit(false);Statement stmt = conn.createStatement();stmt.addBatch("..."); // SQLstmt.addBatch("...");stmt.addBatch("...");...stmt.executeBatch();mit();批次處理•使用PreparedStatement可以進行批次處理PreparedStatement stmt = conn.prepareStatement("INSERT INTO t_message VALUES(?, ?, ?, ?)");Message[] messages = ...;for(int i = 0; i < messages.length; i++) {stmt.setInt(1, messages[i].getID());stmt.setString(2, messages[i].getName());stmt.setString(3, messages[i].getEmail());stmt.setString(4, messages[i].getMsg());stmt.addBatch();}stmt.executeBatch();ResultSet游標控制•可以在建立Statement物件時指定resultSetType –ResultSet.TYPE_FORWARD_ONLY–ResultSet.TYPE_SCROLL_INSENSITIVE–ResultSet.TYPE_SCROLL_SENSITIVE•預設是第一個,也就是只能使用next()來逐筆取得資料•指定第二個或第三個時,則可以使用ResultSet的afterLast()、previous()、absolute()、relative()等方法ResultSet游標控制•還必須指定resultSetConcurrency –ResultSet.CONCUR_READ_ONLY–ResultSet.CONCUR_UPDATABLE •createStatement()不給定參數時,預設是TYPE_FORWARD_ONLY、CONCUR_READ_ONLYResultSet游標控制dbsource= new SimpleDBSource();conn= dbsource.getConnection();stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet result = stmt.executeQuery("SELECT * FROM t_message");result.afterLast();while(result.previous()) {System.out.print(result.getInt("id") + "\t");System.out.print(result.getString("name") + "\t");System.out.print(result.getString("email") + "\t");System.out.println(result.getString("msg"));}ResultSet新增、更新、刪除資料•建立Statement時必須在createStatement()上指定TYPE_SCROLL_SENSITIVE(或TYPE_SCROLL_INSENSITIVE,如果不想取得更新後的資料的話)與CONCUR_UPDATABLEStatement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet新增、更新、刪除資料•針對查詢到的資料進行更新的動作ResultSet result = stmt.executeQuery("SELECT * FROM t_message WHERE name='justin'"); st();result.updateString("name", "caterpillar");result.updateString("email", "caterpillar@"); result.updateRow();ResultSet新增、更新、刪除資料•如果想要新增資料ResultSet result = stmt.executeQuery("SELECT * FROM t_message WHEREname='caterpillar'");result.moveToInsertRow();result.updateInt("id", 4);result.updateString("name", "jazz");result.updateString("email", "jazz@");result.updateString("msg", "message4...");result.insertRow();ResultSet新增、更新、刪除資料•要刪除查詢到的某筆資料ResultSet result = stmt.executeQuery("SELECT * FROM t_message WHEREname='caterpillar'");st();result.deleteRow();ResultSetMetaData •Meta Data即「資料的資料」(Data about data)•ResultSet用來表示查詢到的資料,而ResultSet資料的資料,即描述所查詢到的資料背後的資料描述,即用來表示表格名稱、欄位名稱、欄位型態•可以透過ResultSetMetaData來取得ResultSetMetaDatadbsource= new SimpleDBSource();conn= dbsource.getConnection();stmt = conn.createStatement();ResultSet result = stmt.executeQuery("SELECT * FROM t_message"); ResultSetMetaData metadata =result.getMetaData();for(int i = 1; i <= metadata.getColumnCount(); i++) { System.out.print(metadata.getTableName(i) + ".");System.out.print(metadata.getColumnName(i) + "\t|\t");System.out.println(metadata.getColumnTypeName(i));}。

Java数据库连接:JDBC的基本使用与优化技巧

Java数据库连接:JDBC的基本使用与优化技巧

Java数据库连接:JDBC的基本使用与优化技巧引言:在当今信息化时代,数据库的应用已经无处不在。

而作为Java开发者,我们经常需要与数据库进行交互,以实现数据的存储、检索和处理。

Java数据库连接(JDBC)是一种用于在Java应用程序和数据库之间建立连接的API。

本文将介绍JDBC的基本使用和一些优化技巧,以帮助读者更好地理解和应用JDBC。

一、JDBC的基本使用1. 导入JDBC相关的包在使用JDBC之前,我们首先需要导入相关的包。

在Java中,JDBC相关的类和接口位于java.sql和javax.sql包中。

我们可以通过以下语句导入这些包:import java.sql.*;import javax.sql.*;2. 加载数据库驱动程序在使用JDBC之前,我们需要加载数据库驱动程序。

不同的数据库有不同的驱动程序,我们需要根据使用的数据库选择合适的驱动程序。

例如,如果我们使用的是MySQL数据库,可以通过以下语句加载MySQL的驱动程序:Class.forName("com.mysql.jdbc.Driver");3. 建立数据库连接加载驱动程序后,我们可以通过以下语句建立与数据库的连接:Connection connection = DriverManager.getConnection(url, username, password);其中,url是数据库的URL,username是用户名,password是密码。

连接成功后,我们可以通过Connection对象执行SQL语句。

4. 执行SQL语句在JDBC中,我们可以通过Statement对象执行SQL语句。

例如,我们可以通过以下语句执行一个查询语句:Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("SELECT * FROM table_name");其中,table_name是要查询的表的名称。

jdbc从入门到精通,特别适合初学者

jdbc从入门到精通,特别适合初学者

jdbc从入门到精通,特别适合初学者如果你有翻阅java API文档的习惯的话,你就会发现,jdbc API中接口占了大多数。

不同的jdbc驱动开发者提供了实现必要接口的类。

开发商之间的不断竞争就为我们提供了多种jdbc驱动。

点击这里你会方便的获得很多公司提供的jdbc驱动。

从编程的角度出发,有两个主要的类负责建立与数据库的连接。

第一个类是 DriverManager,它是在 JDBC API 中提供的为数不多的实际类之一。

DriverManager 负责管理已注册驱动程序的集合,实质上就是提取使用驱动程序的细节,这样程序员就不必直接处理它们。

第二个类是实际的 JDBC Driver 类。

这些是由独立厂商提供的。

JDBC Driver 类负责建立数据库连接和处理所有与数据库的通讯。

在所有java程序与数据库之间创建连接的过程的第一步是在jvm中注册jdbc驱动。

在传统的连接机制(相对于后面讨论的 DataSource 连接机制)中,连接和所有数据库通讯是由 DriverManager 对象控制的。

要建立一个连接,必须用 DriverManager 对象注册针对目标数据库的适当的 JDBC 驱动程序。

JDBC 规范规定了 JDBC 驱动程序在装入 JVM 时应该自动用 DriverManager 对象注册自身。

例如,下面的代码段使用一个静态的初始化程序来首先创建一个 persistentjava JDBC 驱动程序的实例,然后用 DriverManager 将其注册。

static {java.sql.DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;}注册驱动程序就是将驱动程序类装入 JVM 的工作,它可以用几种不同的方法完成。

一种方法就是使用类调用器(ClassLoader)Class.forName(yourDriver);。

jdbc说明与用途

jdbc说明与用途

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。

换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用,将Java语言和JDBC结合起来使程序员只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。

JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。

作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。

JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC 之间的桥接。

JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。

JDBCTM 是一种用于执行SQL 语句的JavaTM API,它由一组用Java 编程语言编写的类和接口组成。

JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。

有了JDBC,向各种关系数据库发送SQL 语句就是一件很容易的事。

换言之,有了JDBC API,就不必为访问Sybase 数据库专门写一个程序,为访问Oracle 数据库又专门写一个程序,为访问Informix 数据库又写另一个程序,等等。

JDBC技术简介

JDBC技术简介

(1)JDBC连接池。所谓连接池,就是让一些数 据库连接对象在缓冲池中保持打开状态,使得 任何请求使用数据库连接的应用都能够立即获 得数据库连接,不再需要昂贵的网络开销联系 数据库服务器取得连接,连接池会从本地缓冲 池中取得空闲的连接赋予发出请求的Java应用。 当应用终止数据库连接,数据库连接实际上并 未被拆除,而是返回给连接池缓冲区供其他应 用重用,从而有效地提升数据库访问性能。 (2)数据源(DataSource),是一个由JDBC驱 动程序管理的包含数据库连接信息的对象。 DataSource与JNDI服务协作,数据库连接的实 例化和管理工作都独立于使用它的应用之外。 与连接有关的信息,例如路径和端口号,可以 在DataSource对象的属性中方便地修改,无需 改动使用该数据源的应用代码。
4. java.sql.ResultSet接口 接口
java.sql.ResultSet用于保存数据库结果集, 用于保存数据库结果集, 用于保存数据库结果集 通常通过执行查询数据库的语句生成。 通常通过执行查询数据库的语句生成。 java.sql.ResultSet对于给定声明获得结果 对于给定声明获得结果 的存取控制。 的存取控制 。 在这些接口中提供了非常 丰富的方法, 丰富的方法 , 可以使用这种方法对数据 库进行各种操作。 库进行各种操作。
4. 本地协议的纯 本地协议的纯Java驱动程序( Native驱动程序( 驱动程序 protocol pure Java driver) ) 这种类型的驱动程序将 这种类型的驱动程序将JDBC调用直接转 调用直接转 化为某种特定数据库的专用的网络访问 协议, 协议 , 可以直接从客户机来访问数据库 系统。 这种驱动程序与平台无关, 系统 。 这种驱动程序与平台无关 , 而与 特定的数据库有关, 特定的数据库有关 , 这类驱动程序一般 由数据库厂商提供。 由数据库厂商提供。 第三、 四两类都是纯Java的驱动程序 , 第三 、 四两类都是纯 的驱动程序, 的驱动程序 它们具体Java的所有优点 , 因此 , 对于 的所有优点, 它们具体 的所有优点 因此, Java开发者来说 , 它们在性能 、 可移植 开发者来说, 开发者来说 它们在性能、 功能等方面都有优势。 性、功能等方面都有优势。

jdbc技术总结 jdbc重要技术

jdbc技术总结 jdbc重要技术

JDBC基础l.连接到数据库的方法答:1)ODBC(OpenDatabaseConnectivity)一个以C语言为基础访问SQL为基础数据库引擎的接口,它提供了一致的接口用于和数据库沟通以及访问数据。

2)JDBCJava版本的ODBCJDBC基础2.JDBC应用编程接口答:JDBC应用编程接口是:1)标准的数据访问接口,可以连到不同的数据库;2)JAVA编程语言的一组类和接口。

JDBC应用编程接口能够:1)连接到数据库;2)发SQL查询字符串到数据库;3)处理结果。

JDBC应用编程接口有二个主要的部分:1)JAVA应用程序开发接口面向JAVA应用程序开发者;2)JDBC驱动程序开发接口JDBC基础3.JDBCDriver答:1)一大堆实现了JDBC类和接口的类;2)提供了一个实现java.sql.Driver接口的类。

JDBC基础4.JDBCDriver的四种类型答:1)JDBC-ODBC桥由ODBC驱动提供JDBC访问2)本地API部分Javadriver把JDBC调用转化成本地的客户端API3)JDBC-net纯的Javadriver,将JDBC调用转入DBMS,与网络协议无关。

然后通过服务器将调用转为DBMS协议。

4)本地协议纯的javadriver,将JDBC调用直接转为DBMS使用的网络协议JDBC基础5.JDBC开发者接口答:1)java.sql--java2平台下JDBC的主要功能,标准版(J2SE)2)javax.sql--java2平台下JDBC增强功能,企业版(J2EE)JDBC基础6.使用URL确认数据库答:我们使用URL来确定一个数据库(正确的Driver,正确的主机,正确的协议,正确的协议,正确的用户名和密码);语法:protocol:subprotocol:subname范例:jdbc:db2:MyTestjdbc:db2://localhost:6789/MyTestJDBC基础7.javax.sql包JDBC2.0的增强功能答:1)数据源接口;2)连接池;3)分布式交易;4)行集;JDBC基础8.创建一个基本的JDBC应用答:1)步骤一:注册一个driver;2)步骤二:建立一个到数据库的连接;3)步骤三:创建一个statement;4)步骤四:执行SQL语句;5)步骤五:处理结果;6)步骤六:关闭JDBC对象JDBC基础9.注册一个Driver(步骤一)答:1)driver被用于连接到数据库;2)JDBC应用编程接口使用第一个能成功连接到给定URL的driver;3)在同一时间可以装载多个driver java学习网学java就上JDBC基础10.注册一个driver的方法:答:1)使用类loader(装载;实例化;注册入DriverManager)a.Class.forName("Com.ibm.db2.jdbc.app.DB2Driver");b.Class.forName("Com.ibm.db2.jdb.DB2Driver");c.Class.forName("Com.microsoft.jdbc.sqlServer.SQLServerDriver);d.Class.forName("oracl.jdbc.driver.OracleDriver");e.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2)实例化一个Drivera.Driverdrv=newCOM.cloudscape.core.RmiJdbcDriver();JDBC基础1.建立一个到数据库的连接(步骤二)答:DriverManager调用getConnection(urlString)方法,实际上调用的是driver的connect(urlString)方法;1)当一个driver肯定地对应到一个数据库URL,DriverManager建立一个连接;2)当没有driver匹配,返回null然后下一个driver被检验;3)假如没有建立连接,抛出一个SQLExcepiton异常2.经常使用的一些JDBCURL答:1)JDBC-ODBC:jdbc:odbc:2)Oracle:jdbc:oracle:oci:@orjdbc:oracle:thin:@3)WeblogicMS-SQL:jdbc:weblogic:mssqlserver4:@:4)DB2:jdbc:db2:MyTestorjdbc.db2://localhost:6789/MyTest(需要用户名和密码) 3.Driver连接方法答:1)创建一个到指定Driver实例的直接调用;2)避免一般访问的问题Driverdrv=newCOM.ibm.db2.jdbc.app.DB2Driver();Connectioncon=null;try{con=drv.connect("jdbc:db2:MyTest",newProperties())}catch(SQLExceptione){}4.创建一个Statement(步骤三)答:1)Statement的三个接口:a.Statement;b.PreparedStatement(继承自Statement);c.CallableStatement(继承自PreparedStatement);2)使用方法Connection.createStatement()得到一个Statement对象5.PreparedStatement对象答:1)调用ProparedStatement比statement更为高效;2)继承自Statement;3)语法:PreparedStatementpstm=connection.prepareStatement(sqlString);6.CallableStatement对象答:1)通过CallableStatement调用数据库中的存储过程;2)继承自PreparedStatement;3)CallableStatementcstm=connection.prepareCall("{callreturn_student[?,?]}"); cstm.setString(1,"8623034");cstm.registerOutparameter(2,Types.REAL);cstm.execute();floatgpa=cstm.getFloat(2);7.Statement接口的比较答:|Statement|PreparedStatement|CallableStatement------------------------------------------------------------------------------写代码位置|客户端|客户端|服务器端------------------------------------------------------------------------------写代码位置|客户端|服务器端|服务器端------------------------------------------------------------------------------编写代码技术|Java,SQL操作|Java,SQL操作|数据库的程序语言,如PL/SQL------------------------------------------------------------------------------可配置性|高|第一次高,以后低|低------------------------------------------------------------------------------可移植性|高|假设支持PreparedStatement的话高------------------------------------------------------------------------------传输效率|低|第一次低,以后高|高8.执行SQLStatement(步骤四)答:通过接口方法将SQL语句传输至?认的数据库连接,返回结果可能是一个数据表,可以通过java.sql.ResultSet访问。

JDBC快速入门教程

JDBC快速入门教程

JDBC快速入门教程JDBC是什么?JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。

JDBC代表Java数据库连接。

JDBC库中所包含的API任务通常与数据库使用:连接到数据库创建SQL或MySQL语句在数据库中执行SQL或MySQL查询先决条件:学习JDBC,需要在以下两个主题有一定的了解:JAVA核心编程SQL或MySQL数据库JDBC - 环境设置:请确认您已完成以下设置:核心JAVA安装SQL 或MySQL数据库安装除上述者外,需要建立一个数据库,为本程测试项目使用。

假设这是EMP,在同一个数据库上创建表Employees。

创建JDBC应用程序:参与建立一个JDBC应用程序,本教程中按六个步骤进行:导入包:这需要你有软件包包含了数据库编程所需的JDBC类。

大多数情况下,使用import java.sql.* 就足够了,如下所示://STEP 1. Import required packagesimport java.sql.*;注册JDBC驱动程序:这需要初始化驱动程序,这样就可以打开与数据库的通信信道。

以下是代码片段实现这一目标://STEP 2: Register JDBC driverClass.forName("com.mysql.jdbc.Driver");打开一个连接:这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库,如下所示://STEP 3: Open a connection// Database credentialsstatic final String USER = "username";static final String PASS = "password";System.out.println("Connecting to database...");conn = DriverManager.getConnection(DB_URL,USER,PASS);执行一个查询:这需要使用一个对象类型Statement或PreparedStatement构建,并提交一个SQL语句到数据库。

JDBC的使用

JDBC的使用

JDBC全称java dataBase Connectivity 叫做java数据库的连接,就是用java语言操作数据库就是写一些java代码来连接数据库JDBC本质:其实就是官方定义的一套操作所有关系型数据库的规则,即接口。

我们在使用java代码连接数据库的时候期望使用统一的一套java代码来操作Mysql,Oracle,等数据库,于是sun公司的牛逼的程序员就写了一段叫做JDBC的代码,定义了操作关系型数据库的规则,我们把他们写的这段代码叫做接口我们需要做的就是定义一个实现该接口的类,这个类每一个数据库厂商会提供,我们把这个实现类叫做数据库驱动。

各个数据库厂商去实现这套接口,提供数据库驱动打包成jar包。

我们可以使用JDBC编程,但是真正执行的代码是驱动jar包的实现类。

Person接口Worker类(工人的实现类)Person p=new Worker(); 父类引用指向子类对象的方式Person接口中有个eat方法p.eat(); 调用Worker()中的eat方法编程类型都是以接口调用方法JDBC快速入门:步骤1.导入驱动jar包jar包里面其实放到就是class文件.java叫做源码文件.class叫做字节码文件2.注册驱动需要让程序知道我们用的是哪一个驱动包3.获取数据库的连接对象Connection java代码和数据库的桥梁连接对象4.定义sql语句5.将sql发送给数据库,数据库帮我们执行这个sql语句6.执行sql语句7.获取执行sql语句的对象Statement因为connection这个对象不能直接执行sql语句8.执行sql,接受返回结果其实就是调用方法,然后接收方法的返回值。

9.处理结果10.释放资源。

简述jdbc操作数据库的具体步骤。

简述jdbc操作数据库的具体步骤。

JDBC学习笔记:操作数据库的具体步骤
在Java应用程序中,JDBC是操作关系型数据库的重要技术之一。

本文将介绍JDBC操作数据库的具体步骤,以帮助初学者掌握JDBC技术。

1. 加载驱动程序:JDBC需要特定的驱动程序才能连接目标数据库。

我们需要使用Class.forName()方法加载数据库的驱动程序,例如MySQL的驱动程序为com.mysql.jdbc.Driver。

2. 建立连接:使用DriverManager类的getConnection()方法,
传入目标数据库的URL、用户名和密码,建立与目标数据库的连接。

3. 创建Statement对象:在建立了与数据库的连接后,创建Statement对象来执行SQL语句。

4. 执行SQL语句:通过Statement对象的executeQuery()方法执行SELECT语句,或通过executeUpdate()方法执行其他更改数据库的
语句。

5. 处理结果集:如果执行的SQL语句返回的是ResultSet对象,
我们需要使用ResultSet对象来处理查询结果。

6. 关闭连接和释放资源:使用Connection对象的close()方法关闭与数据库的连接和释放相关资源。

除了上述步骤外,我们还需要掌握异常处理、事务处理和使用PreparedStatement等高级技术来提高代码的效率和安全性。

总之,掌握JDBC操作数据库的具体步骤是Java开发中不可或缺的技能之一,希望本文能对初学者有所帮助。

JDBC基础结构知识

JDBC基础结构知识
+from friends"
+ " group by name"; 演示:示例 3
17
ACCP V4.0
JDBC 删除和修改实现
/iiii/c/pmmmm***}它l*****u***atucs//ppppbrp}CSSSt}}J@ @s这构oqrr}}}yoooolrdcly演stttoinlocarrcrrrr={CSavab这造=niitttt{SscsSssscSSaJtntn=etuceyselntoqtttodcjjjj"示tayggyyy"aaaamrmmm2个方tcsctjmehDnlnDbhsdsassssvvvvhttsuc=ti.tttetceotttbstereaaaa类法o(c..e=eeeqitri2==(ecm.CdcrcSinvl....lnl"mfmmmSole;ossssl:xo;DU+.演Betolv{co.Jcn*taqqqqQsQ1eo.r...ress/oreopdodooooN"esllllM.c示iu....tcLerinv0ndbnbuuuusSDSCLm(fdutato(Erea),.arc.c.tNtttt)oQtc;mroci.pn...tSmrne2a2tm:;xpippp中;romrMetvnr;LacU(t0eeeQerrrriatee()nniiiieEgFa0afs(annnnnpifrmLret"各{npetrn5toMxtialttttds"eenicellll(trec中eanu;nnnmuaiSt.年Sn(aSoeningg(n种(((cntodnte"c""ten命tpdeteedr.aa李n;sae)ji(8"t"srt)Edntcts;i)命C)g.令);eloes;gbg;ie四;qx月wkemnmoeecc)l的er[)h;nt令的.et];e;{eoC2ena\pa用nn'd6r记e李dotrtet的big(c(dno法日))c录四tsrrn;n;it.eo)用.reJ已\sicn{dmc';se(tb法更u="i()oc;nr\{nOl'新a青)(;mdu"岛br)el;c))\;Dl'ikwreivh\e'e张rr"e)三;“\';";

java jdbc 实现步骤

java jdbc 实现步骤

java jdbc 实现步骤Java JDBC是Java提供的一个用于操作数据库的API,可以通过它来实现与数据库的连接、查询、更新等操作。

下面是JDBC实现的基本步骤及相关参考内容。

1. 加载驱动程序在使用JDBC连接数据库之前,需要先加载数据库对应的驱动程序。

不同的数据库有不同的驱动程序,可以在数据库官方网站或相关技术文档中找到对应的驱动程序。

加载驱动程序可以使用Class.forName()方法。

参考内容:官方文档或驱动程序提供的使用指南。

2. 建立连接通过DriverManager.getConnection()方法建立与数据库的连接。

该方法需要传入数据库的URL、用户名和密码。

数据库URL的格式因数据库而异,可以根据数据库的文档或官方网站查找具体的格式。

参考内容:数据库的官方文档或官方网站提供的连接示例。

3. 创建Statement通过Connection对象的createStatement()方法创建Statement对象。

Statement用于执行SQL语句,并返回执行结果。

参考内容:Java官方文档中有关Statement的API文档。

4. 执行SQL语句通过Statement对象的executeUpdate()方法执行更新操作,如插入、修改和删除数据。

通过Statement对象的executeQuery()方法执行查询操作,如查询数据或统计数据条数。

参考内容:Java官方文档中有关Statement的API文档。

5. 处理结果对于查询操作,可以通过ResultSet对象获取执行结果。

ResultSet提供了一系列的方法用于操作结果集,如获取数据、遍历结果等。

参考内容:Java官方文档中有关ResultSet的API文档。

6. 关闭资源使用完JDBC相关的对象后,需要及时关闭相关的资源,释放数据库连接、Statement和ResultSet等资源。

可以通过调用close()方法来关闭资源。

JDBC 事务管理指南说明书

JDBC 事务管理指南说明书
mit( );
Otherwise, to roll back updates to the database made using the Connection named conn, use the following code −
conn.rollback( );
The following example illustrates the use of a commit and rollback object −
When you set a savepoint you define a logical rollback point within a transaction. If an error occurs past a savepoint, you can use the rollback method to undo either all the changes or only the changes made after the savepoint.
"VALUES (106, 20, 'Rita', 'Tez')"; stm t.executeUpdate(SQL); //Submit a malformed SQL statement that breaks String SQL = "INSERTED IN Employees " +
"VALUES (107, 22, 'Sita', 'Tez&/ If there is no error, commit the changes. m it();
That may be fine for simple applications, but there are three reasons why you may want to turn off the auto-commit and manage your own transactions −

JDBC学习总结--JDBC快速入门教程

JDBC学习总结--JDBC快速入门教程

JDBC学习总结--JDBC快速⼊门教程先感谢前⼈的劳动成果,本教程中含有多处指路,请注意筛选.前置知识:基本SQL 语句,JAVA SE基础JDBC ⽬录:1.JDBC概念2.JDBC处理SQL语句的过程(建表,查表)建⽴与数据库的连接创建 statement执⾏ Query处理结果集(ResultSets)3.专题介绍ResultSet 与 Statement 中的 Prestatement,CallableStatement 详细介绍批处理的使⽤ + 删除表格DataSource 与连接池,事务 (DBCP,简易连接池)4.结尾ORMDAO封装⾃⼰的JDBC1. JDBC的概念JDBC(Java DataBase Connectivity)是⼀种数据库连接技术,能实现Java程序对各种数据库的访问。

由⼀组使⽤Java语⾔编写的类和接⼝(JDBC API)组成,他们位于java.sql以及javax.sql中。

中的 (⼆.JDBC是什么)作⽤:1. 与数据库建⽴联系.2. 将编写好的SQL语句发送⾄数据库执⾏3. 对数据库返回的结果进⾏操作JDBC APIjava.sql.*javax.sql.*连接数据库相关的:DriverManager: ⽤URL连接数据库, 在4.0版本之前要进⾏加载. 即⽤映射加载驱动 Class.forName("com.mysql.jdbc.Driver"); 相对于DriverManager类,DataSource更适合⽤于获取操作数据的Connection对象, 它相对灵活,并且⽀持 JNDI ,可以为servlet容器提供连接池 (可以去找DBCP的资料,这⾥涉及到了 .) ,后续会解释DataSource的使⽤.Connection接⼝: 负责连接数据库并担任传送数据的任务。

数据库SQL相关的:Statement接⼝: 负责执⾏SQL语句。

JDBC学习手册

JDBC学习手册

JDBC(Java DataBase Connectivty)整理人:徐仕锋(Eric)版本号:v2009-1-20一、JDBC概述1概述JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。

从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。

JDBC的实现由数据库厂商以驱动程序的形式提供。

JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。

ODBC:基于C语言的数据库访问接口。

●JDBC也就是Java版的ODBC。

●JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。

2JDBC的发展没有JDBC之前java程序是这样连接各种数据库的。

缺点:1、要求程序员必须熟悉编写java程序连接各种数据库的驱动。

2、移植性很不好,更改数据库必须重新编写连接数据库的驱动程序。

用了JDBC以后java连接各种数据库方便多了!3JDBC的API介绍在JDBC中包括了两个包:java.sql和javax.sql。

①java.sql 基本功能。

这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。

同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。

②javax.sql 扩展功能。

它主要为数据库方面的高级操作提供了接口和类。

如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集(RowSet)等。

主要对象和接口:4驱动程序工作分类驱动程序按照工作方式分为四类:1、JDBC-ODBC bridge + ODBC 驱动JDBC-ODBC bridge桥驱动将JDBC调用翻译成ODBC调用,再由ODBC驱动翻译成访问数据库命令。

优点:可以利用现存的ODBC数据源来访问数据库。

缺点:从效率和安全性的角度来说的比较差。

不适合用于实际项目。

2、基于本地API的部分Java驱动我们应用程序通过本地协议跟数据库打交道。

JDBC编程实践手册

JDBC编程实践手册

JDBC编程实践手册随着互联网的不断发展,数据库成为了大数据时代的基础设施之一,而Java作为一门在互联网行业中广泛使用的编程语言,JDBC技术在Java语言与数据库之间进行数据交互的重要角色。

本文将深入介绍JDBC编程实践手册,包括JDBC的定义、JDBC编程实践、JDBC编程相关的技巧和实例等内容。

一、JDBC的定义JDBC是Java Database Connectivity的简称,即Java数据库连接,是一个Java API,用于与数据库进行通信。

JDBC允许Java程序创建和执行SQL 语句,连接和断开连接数据库,执行事务处理等操作。

JDBC技术是由SUN公司开发的,目的是为了使Java开发人员能够编写可移植的数据库应用程序。

JDBC提供了一个标准的接口,使Java开发人员能够通过它与不同类型的数据库打交道,无论是关系型数据库还是非关系型数据库。

二、JDBC编程实践通过JDBC技术,Java程序能够连接数据库,并对数据进行增删改查等操作。

下面我们将通过实例介绍JDBC编程的基本流程及相关操作。

1. 导入JDBC驱动首先,我们需要下载数据库对应的JDBC驱动程序,然后在Java程序中导入该驱动。

根据不同的数据库,导入的方式也不同。

以MySQL数据库为例,在Java程序中导入MySQL数据库的JDBC驱动程序方式如下:Class.forName(\"com.mysql.jdbc.Driver\");2. 建立数据库连接在导入JDBC驱动程序之后,程序需要建立一个与数据库的连接。

JDBC使用Connection对象代表与数据库的连接。

建立连接的代码如下:Connection conn = DriverManager.getConnection(url, user, password);其中,url表示数据库的URL地址,user表示数据库的用户名,password表示数据库的密码。

jdbc语法

jdbc语法

jdbc语法JDBC语法简介一、JDBC概述JDBC(Java Database Connectivity)是Java语言访问关系型数据库的标准API,它提供了一套用于执行SQL语句和访问数据库的方法和接口。

通过JDBC,Java程序可以与各种数据库进行通信和交互。

二、JDBC的基本组成JDBC由以下几个核心组成部分组成:1. DriverManager:驱动管理类,负责加载和注册数据库驱动程序。

2. Connection:数据库连接接口,用于与数据库建立连接。

3. Statement:SQL语句执行接口,用于执行静态SQL语句。

4. PreparedStatement:预编译的SQL语句执行接口,用于执行带参数的SQL语句。

5. ResultSet:结果集接口,用于处理查询结果。

三、JDBC连接数据库的步骤1. 加载数据库驱动程序在使用JDBC连接数据库之前,需要先加载相应的数据库驱动程序。

通过调用Class类的forName()方法,可以动态加载驱动类。

示例:```Class.forName("com.mysql.jdbc.Driver");2. 建立数据库连接通过DriverManager类的getConnection()方法可以建立与数据库的连接。

该方法需要提供数据库的URL、用户名和密码等参数。

示例:```Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/te st", "root", "123456");```3. 创建Statement对象通过Connection对象的createStatement()方法可以创建Statement对象,用于执行静态SQL语句。

示例:```Statement stmt = conn.createStatement();```4. 执行SQL语句通过Statement对象的executeQuery()方法可以执行查询语句,并返回结果集。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
String s = rs.getString("b");
float f = rs.getFloat("c");
}
1.1.2 JDBC 是一种低级 API ,是高级 API 的基础
JDBC 是个“低级”接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API 易
语言。JDBC 要求 SQL 语句必须作为 String 传给 Java 方法。相反,嵌入式 SQL 预处理器允许程序员将 SQL 语句直接与
Java 混在一起使用。例如,可在 SQL 语句中使用 Java 变量,用以接受或提供 SQL 值。然后,嵌入式 SQL 预处理器将通
过 JDBC 调用把这种 Java/SQL 的混合物转换为 Java。
SQL,或者说它可以是个为特定的 DBMS 设计的 SQL 的专用派生物(例如,文档或图象查询)。
JDBC 处理 SQL 一致性问题的第二种方法是提供 ODBC 风格的转义子句。这将在 4.1.5 节“语句对象中的 SQL 转义语法”
中讨论。
转义语法为几个常见的 SQL 分歧提供了一种标准的 JDBC 语法。例如,对日期文字和已储存过程的调用都有转义语法。
对于复杂的应用程序,JDBC 用第三种方法来处理 SQL 的一致性问题。它利用 DatabaseMetaData 接口来提供关于 DBMS 的
只是 Java 应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来
自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机
随着人们对 JDBC 的兴趣日益增涨,越来越多的开发人员一直在使用基于 JDBC 的工具,以使程序的编写更加容易。程序员
也一直在编写力图使最终用户对数据库的访问变得更为简单的应用程序。例如,应用程序可提供一个选择数据库任务的菜单。
任务被选定后,应用程序将给出提示及空白供填写执行选定任务所需的信息。所需信息输入后,应用程序将自动调用所需的
有 Windows、 Macintosh 和 UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用 Java 编程语言,对从 Java
中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并
重要。
1.1.5 SQL 的一致性
结构化查询语言 (SQL) 是访问关系数据库的标准语言。困难之处在于:虽然大多数的 DBMS (数据库管理系统)对其基本
功能都使用了标准形式的 SQL,但它们却不符合最近为更高级的功能定义的标准 SQL 语法或语义。例如,并非所有的数据
库都支持储存程序或外部连接,那些支持这一功能的数据库又相互不一致。人们希望 SQL 中真正标准的那部份能够进行扩
于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是“对用户友好的”接口,它使
用的是一种更易理解和更为方便的 API,这种 API 在幕后被转换为诸如 JDBC 这样的低级接口。在编写本文时,正在开发
两种基于 JDBC 的高级 API:
一种用于 Java 的嵌入式 SQL。至少已经有一个提供者计划编写它。DBMS 实现 SQL:一种专门设计来与数据库联合使用的
自动移植性方面都有许多缺点。
从 ODBC C API 到 Java API 的字面翻译是不可取的。例如,Java 没有指针,而 ODBC 却对指针用得很广泛(包括很容易
出错的指针 "void *")。您可以将 JDBC 想象成被转换为面向对象接口的 ODBC,而面向对象的接口对 Java 程序员来说较
能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程
序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务
上的销售信息服务, Java 和 JDBC 可为外部客户提供获取信息更新的更好方法。
1.1.1 JDBC 的用途是什么?
简单地说,JDBC 可做三件事:
与数据库建立连接,
发送 SQL 语句,
处理结果。
下列代码段给出了以上三步的基本示例:
Connection con = DriverManager.getConnection (
"jdbc:odbc:wombat", "login", "password");
关系映射和嵌入式 SQL 这样的高级 API。
1.1.4 两层模型和三层模型
JDBC API 既支持数据库访问的两层模型,同时也支持三层模型。
在两层模型中,Java applet 或应用程序将直接与数据库进行对话。这将需要一个 JDBC 驱动程序来与所访问的特定数据库
管理系统进行通讯。用户的 SQL 语句被送往数据库中,而其结果将被送回给用户。数据库可以位于另一台计算机上,用户
组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯 Java API 来编写数据库应用程序。
有了 JDBC,向各种关系数据库发送 SQL 语句就是一件很容易的事。换言之,有了 JDBC API,就不必为访问 Sybase 数
据库专门写一个程序,为访问 Oracle 数据库又专门写一个程序,为访问 Informix 数据库又写另一个程序,等等。您只
作者:jeru
日期:2000-12-9 19:00:08
本简介是从《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》这本书中摘引来的。
JavaSoft 目前正在准备这本书。这是一本教程,同时也是 JDBC 的重要参考手册,它将作为 Java 系列的组成部份在
需用 JDBC API 写一个程序就够了,它可向相应数据库发送 SQL 语句。而且,使用 Java 编程语言编写的应用程序,就
无须去忧虑要为不同的平台编写不同的应用程序。将 Java 和 JDBC 结合起来将使程序员只须写一遍程序就可让它在任何 使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的
都是面向对象的数据库接口且基于可在 ODBC 上实现的类。但在这些接口中,我们未看见有特别的功能使我们要转而选择它
们来替代 ODBC,尤其是在 ODBC 驱动程序已建立起较为完善的市场的情况下。它们最多也就是在 ODBC 上加了一种装饰而
已。这并不是说 JDBC 不需要从其最初的版本再发展了;然而,我们觉得大部份的新功能应归入诸如前一节中所述的对象/
易于接收。
ODBC 很难学。它把简单和高级功能混在一起,而且即使对于简单的查询,其选项也极为复杂。相反,JDBC 尽量保证简单功
能的简便性,而同时在必要时允许使用高级功能。
启用“纯 Java ”机制需要象 JDBC 这样的 Java API。如果使用 ODBC,就必须手动地将 ODBC 驱动程序管理器和驱动程序
将结果送回到中间层,中间层再将结果送回给用户。MIS 主管们都发现三层模型很吸引人,因为可用中间层来控制对公司数
据的访问和可作的的更新的种类。中间层的另一个好处是,用户可以利用易于使用的高级 API,而中间层将把它转换为相应
的低级调用。最后,许多情况下三层结构可提供一些性能上的好处。
ODBC 的程序员将发现 JDBC 很容易使用。JDBC 保留了 ODBC 的基本设计特征;事实上,两种接口都基于 X/Open SQL CLI
(调用级接口)。它们之间最大的区别在于:JDBC 以 Java 风格与优点为基础并进行优化,因此更加易于使用。
最近,Microsoft 又引进了 ODBC 之外的新 API: RDO、 ADO 和 OLE DB。这些设计在许多方面与 JDBC 是相同的,即它们
1997 年春季由 Addison-Wesley 出版公司出版。
1.1 什么是 JDBCTM?
JDBCTM 是一种用于执行 SQL 语句的 JavaTM API(有意思的是,JDBC 本身是个商标名而不是一个缩写字;然而,JDBC
常被认为是代表 “Java 数据库连接 (Java Database Connectivity)”)。它由一组用 Java 编程语言编写的类和接口
对这个问题的回答是:Java 可以使用 ODBC,但最好是在 JDBC 的帮助下以 JDBC-ODBC 桥的形式使用,这一点我们稍后再
说。现在的问题已变成:“为什么需要 JDBC”? 回答如下:
ODBC 不适合直接在 Java 中使用,因为它使用 C 语言接口。从 Java 调用本地 C 代码在安全性、实现、坚固性和程序的
通过网络连接到上面。这就叫做客户机/服务器配置,其中用户的计算机为客户机,提供数据库的计算机为服务器。网络可
以是 Intranet(它可将公司职员连接起来),也可以是 Internet。
在三层模型中,命令先是被发送到服务的“中间层”,然后由它将 SQL 语句发送给数据库。数据库对 SQL 语句进行处理并
展以包括越来越多的功能。但同时 JDBC API 又必须支持现有的 SQL。
JDBC API 解决这个问题的一种方法是允许将任何查询字符串一直传到所涉及的 DBMS 驱动程序上。这意味着应用程序可以
相关文档
最新文档