精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-10
最后修改:2010-04-10
开始编写 Java 代码之前,请先参考另一篇文章 Apache Derby 入门,用Apache Derby构建脱机Ajax。
首先应该了解 JDBC API 的性质,JDBC 是正式的 Java Database Connectivity API,而且从 Java Development Kit 的 1.1 版本开始就存在了。JDBC API 包含在
关于 JDBC 还有最后一点要注意:Java 应用程序和数据库之间的连接由 JDBC 驱动程序控制。原来有 4 种 JDBC 驱动程序类型,由它们的类型号区分:1、2、3 或 4。类型与 Java 应用程序和数据库进行通信所用的技术对应。当今的大多数驱动程序(包括用来连接 Derby 数据库的驱动程序)是 Type 4 驱动程序,这意味着它们是完全用 Java 语言编写的,它们直接将 JDBC API 转换为厂商特定的数据库协议。对于 Derby 数据库,这个过程就更简单了,因为 Derby 是用 Java 语言编写的!
private static final String driver = "org.apache.derby.jdbc.EmbeddedDriver"; private static final String url = "jdbc:derby:test;create=true"; public static void main(String[] args) { Connection con = null; DatabaseMetaData dbmd = null; try { Class.forName(driver); con = DriverManager.getConnection(url); // Use the database connection somehow. } catch (SQLException se) { printSQLException(se); } catch (ClassNotFoundException e) { System.out.println("JDBC Driver " + driver + " not found in CLASSPATH"); } finally { if (con != null) { try { con.close(); } catch (SQLException se) { printSQLException(se); } } } }
DatabaseMetaData dbmd = null ; dbmd = con.getMetaData() ; System.out.println("\n----------------------------------------------------") ; System.out.println("Database Name = " + dbmd.getDatabaseProductName()) ; System.out.println("Database Version = " + dbmd.getDatabaseProductVersion()) ; System.out.println("Driver Name = " + dbmd.getDriverName()) ; System.out.println("Driver Version = " + dbmd.getDriverVersion()) ; System.out.println("Database URL = " + dbmd.getURL()) ; 如前面的示例所示,为了访问适当的元数据,首先要从当前的 JDBC
private static void printSQLException(SQLException se) { while(se != null) { System.out.print("SQLException: State: " + se.getSQLState()); System.out.println("Severity: " + se.getErrorCode()); System.out.println(se.getMessage()); se = se.getNextException(); } } private static void printSQLWarning(SQLWarning sw) { while(sw != null) { System.out.print("SQLWarning: State=" + sw.getSQLState()) ; System.out.println(", Severity = " + sw.getErrorCode()) ; System.out.println(sw.getMessage()); sw = sw.getNextWarning(); } }
处理 SQL 异常和 SQL 警告是相似的。 在这两个函数中,循环处理警告或异常。这在一般的错误处理场景中可能有点儿奇怪,但是在涉及数据库编程时就很常见了。出现多个警告或异常的原因很简单:在数据库中事件常常连接在一起。例如,如果在数据库中插入多行,而且它们都由于列数据类型或名称不匹配而无法插入,那么就会有多个错误。为了正确地考虑所有错误,需要能够将异常连接在一起,从而让进行调用的代码知道数据库遇到的所有问题。为了简化,Apache Derby 总是将最重要的异常放在异常链的开头。 在循环中,输出错误或警告信息。SQL 状态是一个五字符的字符串,它符合 X/OPEN Common Application Environment(CAE)规范、Data Management: SQL, Version 2 SQL 规范或 SQL99 标准约定,使程序能够从特定的数据库错误中恢复过来。SQL 状态的前两个字符是一个类值,后三个字符形成子类值。SQL 状态为
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.DatabaseMetaData; public class FirstConnect { private static final String driver = "org.apache.derby.jdbc.EmbeddedDriver" ; private static final String url = "jdbc:derby:test;create=true" ; static void printSQLException(SQLException se) { while(se != null) { System.out.print("SQLException: State: " + se.getSQLState()); System.out.println("Severity: " + se.getErrorCode()); System.out.println(se.getMessage()); se = se.getNextException(); } } static void printSQLWarning(SQLWarning sw) { while(sw != null) { System.out.print("SQLWarning: State=" + sw.getSQLState()) ; System.out.println(", Severity = " + sw.getErrorCode()) ; System.out.println(sw.getMessage()); sw = sw.getNextWarning(); } } public static void main(String[] args) { Connection con = null ; DatabaseMetaData dbmd = null ; try { Class.forName(driver) ; con = DriverManager.getConnection(url); SQLWarning swarn = con. getWarnings() ; if(swarn != null){ printSQLWarning(swarn) ; } dbmd = con.getMetaData() ; System.out.println("\n----------------------------------------------------") ; System.out.println("Database Name = " + dbmd.getDatabaseProductName()) ; System.out.println("Database Version = " + dbmd.getDatabaseProductVersion()) ; System.out.println("Driver Name = " + dbmd.getDriverName()) ; System.out.println("Driver Version = " + dbmd.getDriverVersion()) ; System.out.println("Database URL = " + dbmd.getURL()) ; System.out.println("----------------------------------------------------") ; } catch (SQLException se) { printSQLException(se) ; } catch(ClassNotFoundException e){ System.out.println("JDBC Driver " + driver + " not found in CLASSPATH") ; } finally { if(con != null){ try{ con.close() ; } catch(SQLException se){ printSQLException(se) ; } } } } }
Apache Derby下载地址 另一篇文章:用Apache Derby构建脱机Ajax 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1560 次