﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-笔记-随笔分类-JDBC</title><link>http://www.blogjava.net/yuxh/category/44885.html</link><description>way</description><language>zh-cn</language><lastBuildDate>Sat, 28 Jun 2014 22:48:12 GMT</lastBuildDate><pubDate>Sat, 28 Jun 2014 22:48:12 GMT</pubDate><ttl>60</ttl><item><title>JDBC Recipes(一Introduction）</title><link>http://www.blogjava.net/yuxh/archive/2010/04/30/319799.html</link><dc:creator>yuxh</dc:creator><author>yuxh</author><pubDate>Fri, 30 Apr 2010 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/yuxh/archive/2010/04/30/319799.html</guid><wfw:comment>http://www.blogjava.net/yuxh/comments/319799.html</wfw:comment><comments>http://www.blogjava.net/yuxh/archive/2010/04/30/319799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yuxh/comments/commentRss/319799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yuxh/services/trackbacks/319799.html</trackback:ping><description><![CDATA[<p>What Is JDBC ？</p> <p>&nbsp; JDBC 是java编程中一系列允许简单连接到很多数据库（特别是关系型数据库）编程APIs . In Java 2 Platform, Standard Edition (J2SE) 5.0,<br>JDBC API 由两个包定义:  <p>java.sql ：提供java访问处理贮存在数据源（特别是关系型数据库）中的数据，有最基础常用的对象如Connection, ResultSet, Statement, and PreparedStatement。这个包j2se 和j2ee平台都可使用。  <p>javax.sql：提供java访问处理服务器端数据源。这个包给j2ee提供服务，如DataSource 和RowSet。  <p>ODBC bridge是以ODBC标准 C API 方式实现JDBC 的库。  <p>简而言之，JDBC是一个和database-independent 的访问数据库的API。  <p>DriverManager是唯一可以创建数据库连接的类。DriverManager根据各个厂商（如Oracle, MySQL, and Sybase）提供的驱动创建数据库。  <p>What Is ODBC ？  <p>&nbsp; Open Database Connectivity (ODBC) 是一种来自微软的编程接口，他为Windows应用程序访问网络上数据库提供了通用语言。 ODBC is a C-based interface<br>to SQL-based database systems. It provides a consistent interface for communicating with a database and for accessing database metadata (information about the database system vendor and how the tables, views, and data are stored).ODBC作为标准出现。厂商为各自的DBMS提供了各种的驱动或bridges。从java客户端访问ODBC-based数据库，可以使用JDBC-ODBC bridge，因此可以使用JDBC-ODBC bridge访问支持ODBC的数据库，比如Microsoft Access。微软为他的操作系统提供ODBC driver manager。ODBC driver manager协调访问ODBC驱动和对应的数据源。  <p>问题：如果用c++写数据库客户端，你不得不在另一平台重新写客户端；PC版的不能在Macintosh上运行。两个原因：1.c++不是跨平台的，很多东西没有特别指定（如int型用多少位表示）2 更重要的是，想网络访问，GUI框架库等在各个平台不同。ODBC的另一个问题是，接口复杂学习时间长。JDBC去除了这些问题，为访问关系数据库引入平台无关的解决方案。因为性能问题和缺少事务支持, JDBC-ODBC bridge 驱动只适合实验用或没有其他可选方法。  <p>What Is a JDBC-ODBC Bridge?  <p>&nbsp;&nbsp; 简而言之，JDBC-ODBC bridge通过大多数ODBC驱动来提供JDBC访问。它是一个把JDBC操作转换为ODBC操作的JDBC驱动。（ODBC操作是由 C-based libraries实现的——ODBC功能仍然在二进制代码库中；如果数据库或硬件平台更换，需要替换ODBC库）。brige作为sun.jdbc.odbc包实现，包含一个native library用来访问ODBC。sun.jdbc.odbc包在/jre/lib/rt.jar中，包含一个sun.jdbc.odbc.JdbcOdbcDriver类，用来JDBC驱动。注意，JDBC-ODBC bridge是一种“万能”的方式，因此可能比一些特别设计的JDBC驱动慢。  <p>SQL is a Data Manipulation Language (DML—影响数据库对象内容的命令集) and a Data Definition Language (DDL—影响数据库对象结构的命令集).SQL also 提供控制事务命令 (such as commit and rollback)  <p>连接jdbc的过程参考<a href="http://www.blogjava.net/yuxh/archive/2009/04/24/267280.html" target="_blank">JDBC加载分析</a> 。总之JDBC驱动的作用是提供各种数据库的具体实现(实现了java.sql.Driver接口)，隐藏具体数据库的细节（每个数据库厂商可能会为同一个数据库提供不止一个驱动，这些效率，价格/性能会有不同）。  <p>在fianlly中立刻关闭/释放 JDBC资源(such as the ResultSet, Statement, PreparedStatement, and Connection objects)，而不是等他们自己关闭，会改进应用程序的性能。写一个工具类释放这些资源是一个好办法。 <p>JDBC API主要用来传SQL statement给数据库，但也能读写表格式数据源的数据，这种来自javax.sql.RowSet组接口的读写能力可以被定制去使用更新spreadsheet,flat file 类似表格式数据源的数据。 <p>JDBC有四种类型的驱动连接数据库。</p> <p>异常：SQLException:有getNextException()可以链接一系列异常，还有很多方法可以展示额外的错误/异常信息。SQLWarning:SQLException的子类，表示非致命可忽略BatchUpdateException:批量更新时出现的错误，除了SQLException提供的信息，还有错误发生前已成功执行多少条数据DataTruncation:意外truancate 数据抛出。</p><img src ="http://www.blogjava.net/yuxh/aggbug/319799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yuxh/" target="_blank">yuxh</a> 2010-04-30 13:54 <a href="http://www.blogjava.net/yuxh/archive/2010/04/30/319799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>