JDBC
Java Database Connectivity (JDBC)是一个标准的Java API,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句。WebLogic JDBC是JDBC规范的企业级实现,它为标准的JDBC API提供了大量的扩展
JDBC基础知识
一、采用JDBC访问数据库的基本步骤:
A.载入JDBC驱动程序
B.定义连接URL
C.建立连接
D.创建Statement对象
E.执行查询或更新
F.结果处理
G.关闭连接
二、载入JDBC驱动程序:
1.为了使代码尽可能地灵活,我们要避免对类名的引用进行硬编码(hard-coding),因此我们可以采用从Properties文件中载入驱动程序的方法,也可以使用在服务器中配置数据源(DataSource)的方法来避免在代码中硬编码
2.在开发过程中要保证CLASSPATH设定中包括驱动程序JAR文件所在的路径。在WEB服务
器上部署时要将JAR文件放在Web应用的WEB-INF/lib目录下。如果多个Web应用使用相同的数据库驱动程序可以将JAR文件放置在服务器使用的公共目录<%CATALINA_HOME%>\common\lib中
三、定义连接URL:
载入JDBC驱动程序之后,必须指定数据库服务器位置。指向数据库的URL所使用的协议是:
jdbc:子协议,并且载入服务器的主机名、端口、数据库名(或引用)。如:Oracle 的连接URL:
jdbc:oracle:thin:@192.168.0.71:1521:UMV2
jdbc:oracle:采用Oracle驱动程序
thin:指连接服务器所采用的模式
@192.168.0.71:服务器的地址
1521:服务器的监听端口
UMV2:数据库名
四、建立连接:
1.一个数据库连接(Connection)可以通过其自身的getMetaData()来获取它的自身信息
2.默认情况下一个数据库的连接是自动提交模式的(auto-commit),也就是说每当一个SQL语句
被执行后其改变结果都会被自动提交,如果auto-commit模式被关闭,那么方法commit()必须被显式调用以提交改变结果,否则的话所有对数据库操作的结果都不会被保存
五、创建Statement对象:
在同一时间下,每个Statement对象只能打开一个ResultSet对象。所以,假如有两个同样结果的结果集在交叉访问,那么这两个结果集必定为两个不同的Statement对象所创建。如果在打开一个新的结果集的时候存在一个已经打开的结果集,则这个已经存在的结果集会被隐式的关闭
六、执行查询或更新:
在Statement对象中可以执行如下的操作:
A.查询操作:executeQuery(SQL语句) B.维护操作:executeUpdate(SQL语句)
C.批处理操作:executeBath()
七、结果处理:
1.ResultSet中行的第一列索引为1,而非0,访问ResultSet中的数据时要使用列名,而非索引
但要注意使用列名作为查询条件是大小写敏感的。
2.JDBC1.0中,我们只能在ResultSet中向前移动;在JDBC2.0中,我们可以在ResultSet中向
下(next)或向上(previous)移动,同样也可以移到特定的行(relative,absolute)
3.默认情况下ResultSet是不可更新的,且只能向前移动。下面的代码显示了如何创建一个可滚动的、对更新敏感的ResultSet
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(“SELECT a, b FROM TABLE2″);
// rs will be scrollable, will not show changes made by others,
// and will be updatable
4.ResultSet和ResultSetMetaData没有直接提供方法返回查询所返回的行数。然而,在JDBC
2.0中,可以通过调用last()方法将游标定位到ResultSet的最后一行,然后调用getRow()方
法获取当前的行号。在JDBC1.0中,确定行数的惟一方式是重复调用ResultSet的next()方法,
直到它返回false为至
八、关闭连接:
在关闭数据库连接时应该以ResultSet、Statement、Connection的顺序进行
JDBC-PreparedStatement(预备语句)
一、PreparedStatement(预备语句)的创建:
首先按照标准的格式创建参数化语句,在实际使用之前发送参数到数据库进行编译。用问号表示语句中应该为具体的值所替换的位置。每次使用预备语句时,只需要使用相应的setXxx调用,替换语句中标记出来的参数。然后就可以和常规的语句一样,使用executeQuery或execute/executeUpdate修改表中的数据。例如:
Connection connection = DriverManager.getConnection (url,username,password);
// 创建带问号的参数化语句
String template = ” UPDATE music SET price=? WHERE id=? “;
PreparedStatement statement = connection.prepareStatement (template);
float newPrices[] = getNewPrices();
int recordingIDs = getIDs();
for(int i=0; i
Sorry, the comment form is closed at this time.
No comments yet.