没有 安装 oracle 数据的 可以查看:
0. oracle 11打不开 SQL Developer 需要指定 jdk,指定 Oracle自带的就好了,不要指定你自己安装的.
1. 安装配置完 oracle 数据库后,在命令行(sqlplus) 下使用 oracle 一切正常
但是oracle 自带的 SQL developer 却死活登不上去 ! 一直报,网络适配器 的错误.
于是到网上去找了 解决方法.
然后发现是 网络 地址 和 服务的问题:
1) 由于很多时候 IP 地址是可变的. 安装的时候 自动生成的 IP 很可能
跟 你使用 数据库时,IP 不同.所以,就是由于 IP 不同包报错:
找到 安装目录 里的: listener.ora tnsnames.ora 这两个文件
我的安装目录: D:\app\Administrator\product\12.2.0\dbhome_1\network\admin
然后 用记事本打开上面两个文件:
把其中的 IP 地址, 改成 对应的IP, 我改的 是 localhost.
2) 按下 Windows 键,搜索 服务 (第一个):
然后 全部打开:
找到 其中 oracle开头的全部打开 (打开部分就行,自行百度吧.楼主是全部打开):
然后重启 SQL developer 不行就 重启电脑. 我是 重启电脑,第二天 回来 就 OK 的....
2. 这里不是 问题, 是一个配置.
到 官网 下载 一个 oracle 12 版本对应的 jdbc 包,或者:
到安装目录下,找 叫 ojdbc8.jar 的文件
我的路径; D:\app\Administrator\product\12.2.0\dbhome_1\jdbc\lib
直接导入项目,或者 自建 pom 路径导入.我是 自建 pom 路径 通过 maven导入;
直接导入,项目 到时候可能找不到 此驱动...
3.项目 要求 创建 一个 有 主键 加自增的 表,但是 oracle 却不支持 auto_crement 这个
关键字.于是,只能用 触发器,做一个 自增:
看不懂的话,自行 百度 oracle主键自增长.
CREATE TABLE t_dict_areas (
id number(11) NOT NULL,
city_code varchar2(6) DEFAULT NULL,
area_code varchar2(6) DEFAULT NULL,
area_name varchar2(16) DEFAULT NULL,
PRIMARY KEY (id)
);
-- 创建序列
create sequence seq_t_dict_areas
minvalue 1
nomaxvalue
start with 1
increment by 1
nocycle -- 一直累加,不循环
nocache;
-- 创建触发器,如果insert语句不指定ID自动插入增长值
CREATE OR REPLACE TRIGGER tr_t_dict_areas
BEFORE INSERT ON t_dict_areas FOR EACH ROW WHEN (new.id is null)
begin
select seq_t_dict_areas.nextval into:new.id from dual;
end;
4. 测试 插入数据的时候 可能 会遇到,一个 对 users 表空间 无权限的问题.
要用 ( 前提登录 超级管理员 sys ) ALTER USER userName QUOTA UNLIMITED ON USERS;
或者 自行 分配其他表空间,或者自行创建表空间 ,然后分配 表空间.自己权限不够 就登陆 sys 超级 管理员
5. 使用 oracle 提供的 jdbc 和 mybatis 框架的 一些规定:
1) mybatis 的 配置文件 sql 语句 不能 使用 ; 号 结尾, mysql 没有硬性要求.
2) 每条查询语句,都要指定 返回值类型 即使返回自类型 是 节本类型:
加上, resultType="java.lang.String"
3) 附:常见的Jdbc Type 与 Java Type之间的关系:
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
6.当报无效的列类型 (就是 试图 插入一个 #{username} 解析 为 null 值的时候):
有两种解决方式:
1) where id = #{id,jdbcType=VARCHAR}
所有 语句 都改成这种形式 -- 不推荐,好麻烦!
2) application-dao.xml 文件 里的 该类加上这个属性
(不管哪个文件 ,只要是是 配置 SqlSessionFactoryBean 这个类 的属性设置:)
<!-- 配置SqlSessionFactoryBean -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
...
<property name="configLocation"
value="classpath:config/SqlConfig.xml" />
.....
</bean>
config/SqlConfig.xml" />
.....
</bean>
然后在 对应的 路径 config/SqlConfig.xml 文件里写上:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
...
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
...
</configuration>
7. 用 myeclipse 2017 + oci jdbc + oracle 的 时候 遇到的一个错误 ( eclipse 不会报,可以自行忽略):
no ocijdbc12 in java.library.path
需要在 Tomcat 的 Arguments 加上 : (也就是,你 ocijdbc12.dll 所在的路径)
如何打开这个窗口?
右键 你的 web 项目, run as > run counfigurations >(左边栏) myeclipse Tomcat 8.5 > (右边栏)Argumetms 然后如 上图 加上那个路径,即可!
到这里,oracle 就 可以 正式投入使用.
另外希望这篇文章 可以帮助到你!