154.Oracle数据库SQL开发之 JAVA——使用JDBC包

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包)