从SqlServer转手Oracle的一些坑
为将SqlSugar ORM转制成OracleSugar ORM 本想一天搞定,凭着经验不看任何Oracle资料就直接强上了,但是从配置PLSQL和一些语法区别带来了很多坑让我进度放缓
这个贴子对于身边没有Oracle朋友或第一次接触Oracle的朋友应该会有些帮助
1、Oracle安装的目录不能有中文,不能有中文
如果是WIN10的用户在安装过程中会抛出警告,不要管它直接强行安装,安装目录里面不能有中文重要的事情说三遍。
2、下载安装服务
你要知道下址载什么:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html
下载1of2和2of2解压到同一个目录点击安装 ,安装过程非常简单但是要记住你设置的账号和密码。
有几个服务默认会启动,一般都会启动。
3、配置客户端
PLSQL
PLSQL去CSDN下载有现成的
数据库 填 地址/服务 第一次我看了也不懂填只好去查资料
这样还是登录不了的,还要配置奇葩OCI
目录地址:设置ORACLE的主目录
OCI地址: 如果主目下BIN文件的OCI设置了不能用,就要单独下载一个 OCI.dll,填写下载的OCI.DLL地址
OK这样就能够跑起来了
Navicat
下载:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Instant Client for Microsoft Windows (x64)
将它解压覆盖到 Navcat 安装目录下的 Navicat\Oracle\servers\ora
设置刚才覆盖的地址
OK可以跑起来了
4、表名的大写与小写
如果使用PLSQL可能不会遇到这种问题他会把你的表自动转成大写,假如你用Navcat建一个表为Student ,
你使用 select * from Student是查询不到这个表的,只能写成这样select * from "Student" 所以建表和字段需要改成大写 这样在查询的时候会很方便。
5、参数化的区别
MYSQL SQLITE SQLSERVER 都可以使用@参数化 ,而ORACLE只能使用 : 作为参数符号
坑了我最长时间的一个坑,就是参数化的顺序问题,这个问题同样不是很多人都会遇的到,因为我用的是最底层的Ado.net
select * from Student where name=:name and id=:id
我的参数是
new OracleParamer[] { id=1,name="2" }(数组不是这么声名只是让你们看的更清楚些。)
因为顺序不同导致错误 所以必须要写成
new OracleParamer[] { name="2" ,id=1}
(经过各种排除法才找到了是顺序引的BUG,当时血差点吐出来了,难道Oracle和Access一样不智能)
解决这个问题的方法就是
将 SqlCommand.BindByName = true;
设置后顺序问题就解决了,解决问题很容易,难的是找不出问题点在哪儿。
6、默认Oracle只能查询一条语句
如果你写成 insert (xxx) values (xxxx);select xxx; 这样是会报错的,要加上begin end才可以执行多条 ,貌似 begin end不能用于查询只能是 update delete insert
7、Oracle和SQLServer不一样没有identity都是通过序列实现的
创建一个序列,然后行入 insert (id) values (序列名.Nextval) 查询当前序列用 SELECT 序列名.currval from dual 相当于select @@identity
另外OracleSugar.ORM 已经转制成功了 花了些时间,在测试2天就会发布。
可以先了解下 SqlSugar ORM http://www.cnblogs.com/sunkaixuan/p/5654695.html
从SqlServer转手Oracle的一些坑的更多相关文章
- EntityFramework CodeFirst SQLServer转Oracle踩坑笔记
接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Se ...
- 针对各主流数据mysql、sqlserver、oracle中文乱码问题。
针对各主流数据mysql.sqlserver.oracle当以编码格式gbk存放数据时,要注意字符串类型的字段,要采用宽字符串nvarchar存放,前提是当你的应用程序是utf8编码,而数据库是gbk ...
- SQLServer与Oracle的对照
近期去铁科院面试,项目组长问了我这样一下问题:SQLServer与Oracle的差别是什么?从进入软件行业.从開始CS的编码到BS的编码过程中使用的都是SQLServer.在半年前開始敲DRP ...
- SQLServer访问Oracle查询性能问题解决
原文:SQLServer访问Oracle查询性能问题解决 1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考 ...
- C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
[前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需 ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置
spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...
- 转 update关联更新在sqlserver和oracle中的实现
sqlserver和oracle中实现update关联更新的语法不同,都可以通过inline view(内嵌视图)来实现,总的来说sqlserver更简单些. 测试例子如下: create table ...
- 利用Kettle进行SQLServer与Oracle之间的数据迁移实践
Kettle简介 Kettle(网地址为http://kettle.pentaho.org/)是一款国外开源的ETL工具,纯java编写,可以在Windows.Linux.Unix上运行,数据抽取高效 ...
随机推荐
- aspnet_isapi.dll设置图文介绍.net的程序实现伪静态
用URLRewriter控件 ①:首先要有这个文件URLRewriter.dll,如果没有,赶快到网上下载一个,并将其放到下面的bin目录里面,并且将其引用添加到下面里面; ②:下面就是Web.Con ...
- 对session的理解
java Servlet API引入session 机制来跟踪客户的状态,session指的是在一段时间内,单个客户和web服务器之间一连串的交互过程,在一个session中,一个客户可能会多次请求同 ...
- 公司内部培训SQL Server传统索引结构PPT分享
公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...
- 中间人攻击 -- Cookie 喷发
0x00 前言 分享个中间人攻击姿势,屡试不爽. 原本是篇老文,不过写的太啰嗦.今天用简明的文字,重新讲一遍. 0x01 原理 传统 cookie 嗅探,只能获得用户主动访问的站点.不访问就抓不到,效 ...
- 程序员的经济学系列——你不可不知的生存智慧——第一篇:小X是要成为IT精英的男人!
21世纪,不懂经济学就是耍流氓!如何才能生活得更好?作为程序员你一定也思考过这个问题.今天我们就来从经济学中寻找这问题的答案吧! 一·PPF与机会成本 1.PPF综述 首先为大家介绍第一个最简单的经济 ...
- AngularJS 中的Promise --- $q服务详解
先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...
- R in Action 读书笔记(6)基本图形
MindMapper原文件
- TODO:浅谈pm2基本工作原理
TODO:浅谈pm2基本工作原理 要谈Node.js pm2的工作原理,需要先来了解撒旦(Satan)和上帝(God)的关系. 撒旦(Satan),主要指<圣经>中的堕天使(也称堕天使撒旦 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (16) -----第三章 查询之左连接和在TPH中通过派生类排序
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-10应用左连接 问题 你想使用左外连接来合并两个实体的属性. 解决方案 假设你有 ...
- Java 8函数编程轻松入门(二)Stream的使用
在C#中,微软基于IEnumerable接口,提供许多便捷的扩展方法,便于实际的开发.在Java 1.8中,Collection接口新增了default stream方法.我们可以针对java集合,在 ...