154.Oracle数据库SQL开发之 JAVA——使用JDBC包
来源:互联网 发布:互联网软件开发投资 编辑:程序博客网 时间:2024/05/17 00:13
154.Oracle数据库SQL开发之 JAVA——使用JDBC包
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50185963
打开数据库连接之前,首先在JAVA程序注册ORACLE JDBC驱动程序。
注册JDBC驱动程序有两种方法:
n 使用java.lang.class类中的forname()方法
n 使用JDBCDriverManager类中的registerDriver()方法
例如:
Class.forName(“oracle.jdbc.OracleDriver”);
第二种注册如下:
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
1. 打开数据库
打开数据库连接主要有两种方法:
n 使用DriverManager类的getConnection()方法
n 使用Oracle数据源对象,先创建它,然后连接它。该方法使用了设置数据库连接详细信息的标准化方法,而且ORACLE数据源对象可以和JNDI一起使用。
1.1 使用getConnection()方法连接数据库
getConne ction方法返回一个JDBCconnection对象。
调用如下:
DriverManager.getConnection(URL,username,password);
URL是程序要连接的数据库和要使用的JDBC驱动程序。
如下:
Connection myConnection =DriverManager.getConnection(
“jdbc:oracle:thin:@localhost:1521:ORCL”,
“store”,
“store_password”);
使用Oracle JDBC Thin驱动程序。返回Connection对象存储在myConnection中。
数据库连接通过Oracle Net进行。
1.2 数据库URL
数据库URL指定程序连接的数据库位置。URL的结构取决于提供JDBC驱动程序的供应商。如果使用的是ORACLE 的JDBC驱动程序,数据库URL结构如下:
Driver_name:@driver_information
l Driver_name是程序使用的ORACLE JDBC驱动程序的名称
u Jdbc:oracle:thin是oracle jdbc thin驱动程序
u Jdbc:oracle:oci 是 oracle JDBC OCI驱动程序
l Driver_information 连接数据库所需的特定于驱动程序的信息。取决于所使用的驱动程序。如果是Oracle JDBC Thin驱动程序,特定于驱动程序的信息应按如下格式设定:
n Host_name:port:database_SID
对于所有ORACLE JDBC驱动程序,包括Thin驱动程序和各种OCI驱动程序,特定于驱动程序的信息还可以使用Oracle Net键值对指定。
(description=(address=(host=host_name)(protocol=tcp)(port=port))(connect_data=(sid=database_SID)))
1.3 使用Oracle数据源连接数据库
可以使用ORACLE数据源连接数据库。ORACLE数据源使用了一个比使用DriverManager.getConnection()方法的方法更标准化的方法,提供了多种参数来连接数据库。
ORACLE数据源也使用JNDI注册。将JNDI用于JDBC是非常有用的,允许注册或绑定数据源,然后在程序中查找数据源,而不需要提供完整的数据连接详细信息。
使用ORACLE数据源需要执行下列3个步骤:
u 创建oracle.jdbc.pool.OracleDataSource类的Oracle数据源对象
u 使用类型中定义的set方法,设置oracle数据源对象属性
u 使用getConnection()方法,通过Oracle数据源对象连接数据库
2. 创建JDBC statement对象
接下来需要在类java.sql.Statement中创建一个JDBC Statement对象。一个Statement对象用于表示一个SQL语句,比如查询、DML语句或DLL语句。
例如:
Statement myStatement=myConnection.createStatement();
根据要执行的SQL语句,使用Statement类中不同的方法来运行SQL语句。如果查询语句,使用executeQuery()方法。如果要执行INSERT、UPDATE或DELETE语句。使用executeUpdate方法。如果事先不知道要执行的SQL语句的类型,可以使用execute方法,它可以执行任何SQL语句。
还有另一个JDBC类可用于表示SQL语句:PreparedStatement类。提供了比Statement类更高级的功能。
3. 从数据库中检索行
要使用JDBC执行查询,可以使用Statement对象的executeQuery方法,接受一个Java String其中包含查询的文本。
一个查询可能返回多行,所以executeQuery方法返回一个对象,存储查询返回的行。该对象称为JDBC结果集(result set),属于java.sql.ResultSet类。
n 创建一个ResultSet对象,使用查询返回的结果填充它
n 使用get方法从ResultSet对象中读取列值
n 关闭ResultSet对象
3.1 步骤1:创建和填充ResultSet对象
如下:
ResultSetcustomerResltSet=myStatement.executeQuery(
“selectcustomer_id,first_name,last_name,dob,phone “+”From customers”);
因为execute方法接受一个Java String,可以再程序实际运行时添加SQL语句。
从ResultSet对象总读取列值
3.2 步骤2:从ResultSet对象中读取列值
要读取存储在ResultSet 中的行的列值,ResultSet类提供了一系列get方法。
在使用GET方法之前,需要理解在ORACLE中用于表示值的数据类型如何映射为兼容的JAVA数据类型。
JAVA程序中用于表示值的类型与ORACLE类型不同。ORACLE使用的类型兼容某些JAVA类型。这样JAVA和ORACLE就可以交换以各自类型存储的数据。
Int和String 类型是核心Java语言的一部分。
Get方法用于读取存储在ResultSet对象中的值。每个get方法的名称很容易理解:取出想要返回的列值JAVA类型的名称,并在其前面加上get这个单词。例如getInt()将列值读取为Java int,使用getString将列值读取为Java String .要将列值读取为java.sql.Date需要使用getDate().
3.3 步骤3:关闭ResultSet对象
使用完ResultSet对象之后,必须使用close方法关闭ResultSet对象。
使用完ResultSet对象之后,一定要记住关闭它,确保及时地收集对象无用的存储单元。
4. 向数据库中添加行
SQL INSERT语句用于向表中添加行。使用JDBC执行INSERT语句有两种方法:
u 使用Statement类中定义的executeUpdate()方法
u 使用PreparedStatement类中定义的execute方法
5. 更改数据库的行
SQL UPDATE语句用于更改表的现有行。和使用JDBC执行INSERT语句一样,可以使用Statement类中定义的executeUpdate()方法和PreparedStatement类中定义的execute方法。
6. 删除数据库的行
SQL DELETE语句用于删除表行。可以使用Statement类中定义的executeUpdate方法或PreparedStatement类中定义的execute方法。
例如:
myStatement.executeUpdate(
“DELETE FROM customer “+”WHERE customer_id= 5”);
7. 处理数字
JAVA程序中存储数字的问题。ORACLE数据库可以存储精度最大为38位的数字。
JAVA程序中存储整数时,可以使用short,int,long或java.math.BigInteger类型,取决于想要存储的整数大小。
使用不同get方法的用法,它们将列值检索为不同类型,然后将输出存储在合适类型的Java变量中。
8. 处理数据库NULL值
数据库表的列可以定义为NULL或NOT NULL。
NULL值存储在JAVA对象中是非常合适的,但对于JAVA数字、逻辑和位类型表示未知。
如何区分零和NULL。
使用ResultSet中的wasNull()方法。
也可以使用JAVA包装类。
9. 控制数据库事务
默认情况下,使用JDBC执行的INSERT、UPDATE和DELETE语句立即被提交,称为自动提交模式。一般来说,使用自动提交模式不是提交更改的首选方法,可能导致SQL语句的执行时间增加,由于每个语句通常都要提交。
可以使用Connection类的setAutoCommit()方法。
应该关闭自动提交模式,一般会加快程序的运行速度。
进行手动提交提交:
例如:
myConnection.commit();
rollback方法用于取消对数据库所作的更改:
myConnection.rollback();
10. 执行DDL语句
SQL数据定义语言用于创建数据库用户、表和许多其他类型的组成数据库的数据库结构。
执行DDL语句会导致隐式提交。如果在执行DDL语句之前执行了没有提交的DML语句,这些DML语句也会被提交。
11. 处理异常
当数据库或JDBC驱动程序发生错误时,会触发java.sql.SQLException异常。
是java.lang.Exception类的子类。比如放入一个try/catch语句中。
例如
Try{
…
} catch (SQLException e) {
…
}
SQLException类定义了4种方法,如:
getErrorCode()当错误发生在数据库或JDBC驱动程序时,该方法返回Oracle错误代码
getMessage()当错误发生在数据时,该方法返回错误信息和5位Oracle错误代码。
当错误发生在JDBC驱动程序时,该方法只返回错误信息。
getSQLState()当错误发生在数据库时,该方法返回包含SQL状态的5位代码。
printStackTrace()异常发生时,该方法显示堆栈的内容。
12. 关闭JDBC对象
当Statement和Connection对象不再有用时,也应将其关闭。
- 154.Oracle数据库SQL开发之 JAVA——使用JDBC包
- 153.Oracle数据库SQL开发之 JAVA——导入JDBC包
- 158.Oracle数据库SQL开发之 JAVA——JDBC扩展
- 152.Oracle数据库SQL开发之 JAVA——准备工作
- java连接oracle数据库JDBC使用的jar报包
- 120.Oracle数据库SQL开发之 PLSQL编程——包
- 125.Oracle数据库SQL开发之 数据库对象——数据库中使用对象类型
- 24.Oracle数据库SQL开发之 SQLPlus使用——编辑SQL语句
- 30.Oracle数据库SQL开发之 SQLPlus使用——从SQL获取帮助信息
- 31.Oracle数据库SQL开发之 SQLPlus使用——自动生成SQL语句
- 160.Oracle数据库SQL开发之 SQL优化——使用绑定变量
- 32.Oracle数据库SQL开发之 SQLPlus使用——断开数据库并退出SQLPLUS
- 126.Oracle数据库SQL开发之 数据库对象——PLSQL中使用对象
- 156.Oracle数据库SQL开发之 JAVA——预备SQL语句
- 60.Oracle数据库SQL开发之 高级查询——使用分析函数之评级函数
- 62.Oracle数据库SQL开发之 高级查询——使用分析函数之窗口函数
- 28.Oracle数据库SQL开发之 SQLPlus使用——使用变量
- 33.Oracle数据库SQL开发之 使用简单函数——使用单行函数字符函数
- dede 两个网站共用一个数据库图片路径问题
- 递归问题
- MFC主线程使用WaitForSingleObject阻塞的问题 http://blog.csdn.net/sysprogram/article/details/17383455
- [TwistedFate]图片异步加载,KVO
- 转发,Servlet异常
- 154.Oracle数据库SQL开发之 JAVA——使用JDBC包
- 源码解析 Universal Image Loader
- ACM比赛的技巧
- 比较转发与重定向和Cookie
- NSNotificationCenter 的使用详解
- win64位系统安装numpy
- 155.Oracle数据库SQL开发之 JAVA——示例程序1
- OpenJudge_P2421 Exchange Rates(DP)
- Unity3D_NGUI_安卓APK安装包瘦身实践(二)