java web ssh框架中数据库由mysql转换到oracle遇到的问题

在此之前项目开发一直使用mysql数据库,由于项目需要,需要使用oracle数据库

1.将mysql数据库中的数据转储到oracle中

Navicat Premium 非常强大,可以连接大部分主流关系型数据库,如oracle、mysql、sqlserver、sqlite等,操作方便、界面简洁。但它还有一个更强大的功能,可以跨库批量迁移数据表,有这种需求的朋友可以通过这个工具轻松实现。

2.oracle大小写敏感

Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写,

create table T_WindRadar  (
   wr_id                VARCHAR2(64)                    not null,
   wr_reciveTime        DATE,
   wr_image             BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

但是 Oracle 同样支持"" 语法,将表名或字段名加上""后,Oracle不会将其转换成大写

create table "T_WindRadar"  (
   "wr_id"                VARCHAR2(64)                    not null,
   "wr_reciveTime"        DATE,
   "wr_image "            BLOB,
   constraint PK_T_WINDRADAR primary key (wr_id)
);

如果加上了"",那么我们采用一般的SQL语句查询则会产生“ORA-00942: 表或视图不存在 ”,因此SQL脚本中需要将表名也加上""。

select * from  "T_WindRadar";

在SQL语句中,其会自动将表名和字段名转换为大写,因此,干脆设计表时直接将数据库的表名和字段名设置为大写的吧。

参考资料

3.maven中oracle连接驱动

对于oralce的jdbc驱动,在maven上搜索到把pom配置复制到pom.xml里进行引用的时候出现下面这种情况

<dependency> 
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.4.0</version>
</dependency>

提示错误信息:Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

虽然能在maven仓库里搜索到,但貌似不能用,原因是oracle是要收费的,不能通过远程的方式来引入,只能通过配置本地库来加载到工程里

下面讲解如何配置本地库加载到工程:

一、首先,下载ojdbc14-10.2.0.4.0.jar的驱动jar包,下载地址为:

oracle官网地址:http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

csdn用户上传的:http://download.csdn.net/download/zhaogp13/8394973

二、随意复制到一个盘,打开cmd执行以下命令(前提是要已经安装好Maven环境)

我这里是把jar文件放到了F盘下面,自己新建了一个oracle文件夹,这里随意就好,只要cmd命令下路径能找到这个jar文件就行

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=F:\oracle\ojdbc14-10.2.0.4.0.jar

执行结果:

现在,你到你本地的maven repository本地仓库文件夹下,进入 com\oracle\ojdbc14\10.2.0.4.0 目录,就能看见ojdbc14-10.2.0.4.0.jar已经在本地仓库,就可以再项目pom.xml文件中引入了

最后,再到项目pom.xml文件中添加以下代码

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.4.0</version>
</dependency>

发现错误提示已经消失

DBCP针对不同数据库的validationQuery

DataBase validationQuery
hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle select 1 from dual
DB2 select 1 from sysibm.sysdummy1
MySql select 1
Microsoft SqlServer select1
postgresql select version()
ingres select 1
derby values 1
H2 select 1
参考原文

5.JDBC连接oracle数据库的方法

连接数据的方法有四种, 这个属于最简单的,一般用网页程序

           // "jdbc:oracle:thin:@计算机名称:监听端口:系统实例名", username, password,

           // 计算机名称,要是自己不知道可以在计算机属性查知.

           // 监听端口一般默认是1521, 要是改变了就看自己的监听文件listener.ora

           // 系统实例名一般是默认orcl, 要是不是的话就用 select name from v$database; 看看当前的实例名.

           // username,password,就是登陆数据库的用户名和密码.

最后分享下我的jdbc.properties文件
#oracle version database settings
jdbc.driver=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:log4jdbc:oracle:thin:@172.18.130.142:1521:orcl
jdbc.username=root
jdbc.password=root
jdbc.validationQuery=select 1 from dual

参考原文

6.Hibernate中的数据库方言(Dialect)

在配置hibernate.cfg.xml时需指定使用数据库的方言:

例:

<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

以下是各数据库对应的方言(Dialect):

数据库

方言(Dialect)

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

MySQL5

org.hibernate.dialect.MySQL5Dialect

MySQL5 with InnoDB

org.hibernate.dialect.MySQL5InnoDBDialect

MySQL with MyISAM

org.hibernate.dialect.MySQLMyISAMDialect

Oracle(any version)

org.hibernate.dialect.OracleDialect

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

Sybase

org.hibernate.dialect.SybaseASE15Dialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServer2005Dialect

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Informix

org.hibernate.dialect.InformixDialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

H2 Database

org.hibernate.dialect.H2Dialect

Ingres

org.hibernate.dialect.IngresDialect

Progress

org.hibernate.dialect.ProgressDialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

Firebird

org.hibernate.dialect.FirebirdDialect


转载请注明出处:http://blog.csdn.net/jialinqiang/article/details/8679171

猜你喜欢

转载自blog.csdn.net/u012530451/article/details/80531167