本周的小组项目工作主要是完成详细设计,在系统实现上这几天我主要在学习使用JDBC连接数据库,之前并没有接触过,所以从最基本的开始去了解学习。
1.JDBC是什么?
JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API。
JDBC库包含的API为每个通常与数据库的使用相关联的任务:
- 使得连接到数据库
- 创建SQL或MySQL语句
- 执行SQL或MySQL的查询数据库
- 查看和修改结果记录
从根本上说,JDBC是一种规范,它提供的接口,一套完整的,允许便携式访问底层数据库。可以用Java来写不同类型的可执行文件,如:
- Java应用程序
- Java Applets
- Java Servlets
- Java ServerPages (JSP)
- Enterprise JavaBeans (EJBs)
所有这些不同的可执行文件就可以使用JDBC驱动程序来访问数据库,并把存储的数据的优势。
JDBC提供了相同的功能,ODBC,允许Java程序包含与数据库无关的代码。
先决条件:
以前正如期进行本教程,需要具备以下两个主题内容很好的了解:
JDBC架构:
JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
- JDBC API: 提供了应用程序对JDBC的管理连接。
- JDBC Driver API: 支持JDBC管理到驱动器连接。
JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。
JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。
注:更多关于JDBC内容(常见的JDBC组件、软件包等)以下链接有详细说明:http://www.yiibai.com/jdbc/jdbc-introduction.html
2.JDBC连接数据库:
在安装相应的驱动程序后,可以开始建立使用JDBC的数据库连接。
涉及到建立一个JDBC连接的编程是相当简单的。下面是这些简单的四个步骤:
- 导入JDBC包: 添加import语句到Java程序导入所需的类在Java代码中。
- 注册JDBC驱动程序:这一步会导致JVM加载所需的驱动程序实现到内存中,因此它可以实现JDBC请求。
- 数据库URL制定:这是创建格式正确的地址指向到要连接的数据库。
- 创建连接对象:最后,代码调用DriverManager对象的getConnection()方法来建立实际的数据库连接。
导入JDBC包:
import 语句告诉Java编译器在哪里可以找到在代码中引用,并放置在您的源代码最开始的类。
使用标准的JDBC包,它允许选择,插入,更新和SQL表中删除数据,添加以下进口到您的源代码:
import java.sql.* ; // for standard JDBC programs import java.math.* ; // for BigDecimal and BigInteger support
注册JDBC驱动程序:
使用它之前,必须注册你的驱动程序在程序。注册驱动程序是由Oracle驱动程序的类文件被加载到内存中以便它可以被用作JDBC接口的实现过程。
需要做这个注册只能在你的程序一次。可以通过以下两种方式之一注册一个驱动程序。
方法(一) - DriverManager.registerDriver():
可以用它来注册一个驱动程序的第二种方法是使用staticDriverManager.registerDriver()方法。
应该,如果使用的是不兼容的JDK JVM,比如微软提供一个使用registerDriver()方法。
下面的示例使用registerDriver()来注册Oracle驱动程序:
try { Driver myDriver = new oracle.jdbc.driver.OracleDriver(); DriverManager.registerDriver( myDriver ); } catch(ClassNotFoundException ex) { System.out.println("Error: unable to load driver class!"); System.exit(1); }注:方法二以下链接有说明:http://www.yiibai.com/jdbc/jdbc-db-connections.html
数据库URL制定:
当加载的驱动程序,可以建立程序中使用DriverManager.getConnection()方法的连接。为方便参考,让列出了三个重载DriverManager.getConnection()方法:
- getConnection(String url)
- getConnection(String url, Properties prop)
- getConnection(String url, String user, String password)
在这里,每个表单需要一个数据库URL。数据库的URL是指向数据库地址。
制定一个数据库URL是大多数用在建立连接相关。
创建连接对象:
使用数据库URL的用户名和密码:
下面三种形式DriverManager.getConnection()方法来创建一个连接对象。getConnection()最常用形式要求传递一个数据库URL,用户名 username和密码 password:
对URL数据库部分databaseName的值:假设使用的是Oracle的瘦驱动程序,需要指定一个主机:端口。
假设有一台主机TCP/IP地址192.0.0.1 以及主机名和Oracle监听器被配置为在端口1521,数据库名称是EMP,然后完整的数据库URL是:
jdbc:oracle:thin:@amrood:1521:EMP
现在,必须调用适当的用户名和密码以及getConnection()方法来获得一个Connection对象,如下所示:
String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; String USER = "username"; String PASS = "password" Connection conn = DriverManager.getConnection(URL, USER, PASS);注:其他两种形式为:只使用一个数据库URL;使用数据库的URL和一个properties对象。具体实现方法说明请见以下链接:http://www.yiibai.com/jdbc/jdbc-db-connections.html
关闭JDBC连接:
在JDBC程序的结束,它明确要求关闭所有的连接到数据库,以结束每个数据库会话。但是,如果忘了,Java垃圾收集器会关闭连接时,它会清除陈旧的对象。
依托垃圾收集,特别是在数据库编程,是非常差的编程习惯。应该总是在关闭与连接对象关联的close()方法连接的习惯。
为了确保连接被关闭,可以在代码中的finally块执行。 finally块都会执行,不管是否发生或也不例外。
要关闭上面打开的连接,应该调用close()方法,如下所示:
conn.close();
显式地关闭连接DBMS节约资源。
小结:第一次使用JDBC来连接数据库,在这过程中也确实遇到了不少问题,例如JAVA、Oracle使用不熟练对整个过程造成了很大影响,所以还是需要加强自己的编程能力,对于过程当中所犯的一些错误需要自己一步一步耐心解决。