`
zhyt710
  • 浏览: 206561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle一步接一步(3)--java连接

阅读更多

(1)现在写一个链接oracle的java测试程序。 注意把驱动程序放在classpath下。本人用的是oracle10g,用的驱动程序包是ojdbc14.jar。在oracle数据库的**/jdbc/lib 目录下可以找到。(**根据安装oracle的具体情况而定)

package test.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleConnection {

	public static void main(String[] args) {
		String sDBDriver = "oracle.jdbc.driver.OracleDriver";
		String sConnStr = "jdbc:oracle:thin:@192.168.1.254:1521:test";

		Connection conn = null;
		ResultSet rs = null;
		Statement stmt = null;
		try {
			Class.forName(sDBDriver);
			conn = DriverManager.getConnection(sConnStr, "SYSTEM", "yourpwd");
			
			if(conn != null) {
				System.out.println("取得链接成功");
			}

			stmt = conn.createStatement();
			stmt.execute("create table ztest(id int, name varchar(20))");
			stmt.executeUpdate("insert into ztest values(1, 'zhangsan')");
			stmt.executeUpdate("insert into ztest values(2, '张三')");
			rs = stmt.executeQuery("select count(*) from ztest");
			while (rs.next()) {
				System.out.println(rs.getInt(1) == 2);
			}
			rs = stmt.executeQuery("select * from ztest");
			while (rs.next()) {
				System.out.println(rs.getInt(1));
				System.out.println(rs.getString(2));
			}
			stmt.execute("drop table ztest");
			rs.close();
			stmt.close();
			
			conn.close();

		} catch (Exception e) {
			System.out.println(e);
		}

	}

}

 

(2) 在(1)中如果把程序改成utf-8编码的话,得到的汉字查询结果就是乱码。因为我的数据库那边用的是gbk编码。

新建一个数据库(用database configration assistant工具,在最后几步中有个标签页可以设定编码类型),改用utf-8字 符集编码,同时把自己的java工程属性也使用utf-8编码(我在eclipse下是可以这样做的)。结果运行上述语句,结果很恐怖,总是有异常,在插入中文数据的时候就会出错。不过我可以断言,oracle的jdbc驱动存在这个不完善的地方,我大胆的把它称之为bug。因为我的插入语句执行的是标准sql。最后的解决办法有些可笑,但总归是可行的,就是用PreparedStatement执行。相关代码片段如下

String prsql = "create table ztest(id int, name varchar(20))";
			pstmt = conn.prepareStatement(prsql);
			pstmt.execute();
			prsql = "insert into ztest(id, name) values(?,?)";
			pstmt = conn.prepareStatement(prsql);
			pstmt.setLong(1, 1);
			pstmt.setString(2, "zhangyt");
			pstmt.execute();
			pstmt.setLong(1, 2);
			pstmt.setString(2, "汉字");
			pstmt.execute();

 好了,至少这样可以大胆的应用utf-8编码了。

 

(3)应用hibernate与oracle链接以及主键生成机制测试。

这里主要讨论主键生成机制的问题,我们知道在用mysql和sqlserver的时候,可以直接声明native方式来让数据库自动生成主键。而oracle自动生成主键的方式是使用sequence,在加上trigger。在利用hibenrate管理oracle表主键时,通常我们都是自定义一个sequence来为我们的表生成主键。当然,这个时候就不再需要trigger了,因为hibnate会为你去检索sequence的下一个值来提供主键设定插入操作原料。但是我们是否可以用native的方式来为oracle表生成主键呢?答案是可以,不过你需要建立一个供hibernate默认使用的sequence,名称是hibernate_sequence。

我们通常的主键设置方式:

       <id name="s_id" column="s_id">
            <generator class="sequence">
              <param name="sequence">student_seq_id</param>
            </generator>
        </id>

上面配置文件中使用得到student_seq_id是自己已经在oracle中建立好的sequence 。

我们使用native的设置方式:

        <id name="p_id" column="p_id">
            <generator class="native"/>
        </id> 

应用上面的方式,需要自己在oracle中建立好名为hibernate_sequence的sequence。同时这种方式并不是没有弊端,就是由于多个表共享一个sequence,在一个表中出现的主键号码可能是不连续的,给人一种怪怪或这不完美的该觉,我是A型血,在这方面尤其敏感。

我的测试例子在附件中

分享到:
评论

相关推荐

    java连接oracle

    综上所述,使用Java连接Oracle数据库涉及加载驱动、设置连接参数、建立连接等多个步骤,每一步都需要仔细处理以确保代码的正确性和效率。掌握这一技能对于任何从事数据库应用开发的Java程序员来说都是至关重要的。

    java连接oracle数据库的驱动包

    本文将深入探讨如何使用Java连接Oracle数据库,以及如何处理所需的驱动包。 首先,Java Database Connectivity (JDBC) 是Java平台的标准API,用于与各种数据库进行通信。它为开发人员提供了一组接口和类,通过这些...

    oracle连接的包

    为了与Oracle数据库进行交互,开发人员通常需要一个连接包,这个包包含了必要的驱动程序和API,使得应用程序能够通过JDBC(Java Database Connectivity)或其他接口与Oracle数据库通信。在Java开发中,这种连接包...

    如何连接MySQL-Oracle数据库

    接下来,我们将分别介绍如何使用 JDBC 连接到 MySQL 和 Oracle 数据库。 #### 连接 MySQL 数据库 为了连接 MySQL 数据库,我们需要使用以下驱动程序和 URL 格式: - **驱动程序类**: ``` ...

    Eclipse是如何连接Oracle数据库的

    在IT领域,特别是软件开发与数据库管理中,...以上步骤涵盖了在Eclipse中使用Java编程语言连接Oracle数据库的全过程,从配置JDBC驱动到执行SQL语句,再到资源的妥善处理,每一步都是构建稳定、高效数据库应用的关键。

    mysql-connector-java-5.1.26.jar

    JDBC是Java平台的标准接口,由Sun Microsystems(现为Oracle公司)开发,用于在Java程序和各种数据库之间建立连接。通过JDBC,开发者可以编写与数据库无关的代码,实现跨数据库平台的数据访问。 mysql-connector-...

    java连接Oracle数据库

    Java连接Oracle数据库主要涉及到Java编程语言、Oracle数据库系统以及JDBC(Java Database Connectivity)技术。JDBC是Java中用于与各种数据库进行交互的一组接口和类,它为开发者提供了标准的API,使得Java应用程序...

    jdbc连接oracle的jar包

    "jdbc连接oracle的jar包"指的是包含Oracle JDBC驱动的Java档案(.jar文件),这些文件提供了必要的API,使得Java程序能够通过JDBC与Oracle数据库建立连接、执行SQL语句以及处理结果。 Oracle JDBC驱动主要有两种...

    oracle连接驱动

    在Java编程环境中,与Oracle数据库进行交互通常需要依赖特定的驱动程序,也就是所谓的“Oracle连接驱动”。本篇将详细介绍Oracle连接驱动及其在MyEclipse集成开发环境中的使用。 Oracle连接驱动主要指的是Oracle ...

    JDBC连接Oracle-MySQL-SQLServer数据库

    3. **创建连接和执行SQL**:与Oracle相似,使用`Class.forName()`和`DriverManager.getConnection()`建立连接,然后执行SQL操作。 最后,对于SQLServer数据库的JDBC连接: 1. **添加驱动**:需要Microsoft的sql...

    jdbc连接oracle jar包

    在Java环境下连接Oracle数据库,你需要特定的驱动包,即Oracle JDBC驱动,通常这个驱动包含在`ojdbc.jar`文件中。 Oracle JDBC驱动主要有三种类型: 1. **JDBC-ODBC桥接驱动**:它是最早的Oracle JDBC驱动,通过...

    mysql-connector-java-5.1.39.jar

    JDBC是Sun Microsystems(现为Oracle公司)开发的一套用于Java语言访问数据库的标准API,它允许Java开发者编写与数据库无关的代码,提高了程序的移植性。JDBC提供了一组接口和类,用于建立、执行SQL语句以及处理结果...

    如何连接Oracle数据库及故障解决办法

    ### 如何连接Oracle数据库及故障解决办法 在IT领域中,Oracle数据库因其强大的功能和可靠性而备受企业青睐。本文将详细介绍如何安装、调试并成功连接到Oracle数据库,同时提供一些常见的故障解决办法,帮助读者更好...

    Matlab建立到Oracle数据库的连接

    **步骤3:** 使用 `database` 函数在 Matlab 中建立到 Oracle 的 JDBC 连接。示例代码如下: ```matlab &gt;&gt; conn = database('orcl', 'scott', '123456', ... 'oracle.jdbc.driver.OracleDriver', ... 'jdbc:...

    JAVA连接常用的数据库

    本文将深入探讨如何使用Java连接几种常见的数据库,包括MySQL、MS SQL Server(2000与2005版本)、Oracle以及Access,为读者提供一份详实的操作指南。 ### 一、MySQL #### 引用包 首先,确保项目中包含了`mysql-...

    Oracle连接的java代码.pdf

    Oracle数据库连接是Java开发中经常使用的技术之一,特别是在进行企业级应用开发时。在给定文件的【部分内容】中,我们看到了使用Java语言和JDBC(Java Database Connectivity) API进行Oracle数据库连接的示例代码。...

    jsp连接oracle数据库代码

    ### JSP连接Oracle数据库知识点详解 #### 一、前言 在Web开发中,Java Server Pages (JSP) 是一种广泛使用的服务器端脚本技术,它允许开发者将动态内容嵌入到HTML页面中。JSP可以与各种类型的数据库进行交互,以...

    Oracle UCM连接oracle数据库.doc

    接下来是安装Oracle UCM的步骤: 1. 确认系统软件需求,包括Windows操作系统、IIS或Apache服务器、JVM、IE或Firefox浏览器以及特定版本的Oracle数据库。 2. 使用SQL*Plus连接Oracle数据库,输入用户名、口令和主机...

Global site tag (gtag.js) - Google Analytics