oracle数据库使用心得之与SQL serve数据库的差异
网上对于SQL数据库的使用比较详细,但是对于Oracle的使用比较少,本文特别适合学过SQL数据库但是工程需要使用Oracle数据的编程人员查看,
时间匆忙,文章可能写得不够详细,希望有人指出错误或者不同见解。
1.VS工作环境的设置
VS中Oracle的功能在2010左右已经停止的更新,如果需要最新的功能可以去Oracle官网上下载
ODP.NET的插件,装好之后手动添加两个引用分别为:
-->using Oracle.DataAccess.Client;
-->using Oracle.DataAccess.Types;
由于是Oracle写的有些注释或帮助比较少,可以参考SQL的方法进行学习,对SQL语句的编写需要达到非常熟练的程度,
不然对程序中出现的bug调试比较困难。一条数据库的命令结尾不应该加上;,会出现意想不到的错误。
2.数据类型的不同
-->在SQL Serve中数据类型基本和之前的C,C#,C++的数据类型基本一致方便上手,而在oracle数据库之中对于数字类型统一使用numeric来实现。
-->numeric(n,m) n-m表示整数部分的长度,m代表小数部分
Oracle中的varchar2与sql中varchar使用相同
3.数据库连接字符串
使用SQL连接字符串为
-->Server=服务器地址;Database=数据库名称;User Id=用户名;Password=密码;
Server与Data Source相同,表示要连接数据库实例的名称或者网络
Initial Catalog与Database相同,表示数据库的名称
4.基本操作指令的不同
1.Top n
-->在SQL Serve数据库中取出结果的前n行
-->在Oracle数据库中删除了该指令,可以采用rownum<n+1的形式。结果相同
2.identity(n,m)
-->在SQL Serve中对某一列值自动赋值,n为起始值,m为增量值,这样对主键的设置比较简单。
-->在Oracle数据库中删除了该指令,若想实现上面的效果,通过触发器设置,通用做法如下
-->1.创建一个全新的序列(Sequences) 代码如下
create sequence SEQ_DOWNRZ_ID --创建序列
minvalue 1 --最小值
maxvalue 99999 --最大值
start with 2012 --序列下一个值
increment by 1 --每次递增1
nocache; --不设置缓存区
-->2.创建一个触发器,将序列的值传给数据表中
create or replace trigger TRI_Downrz_ID --创建触发器
before insert on downrz for each row --设置触发器触发条件,当插入数据id为空值时触发
when (new.ID is null)
begin --满足条件时,执行下列语句
select SEQ_downrz_ID.Nextval into:new.id from dual; --将序列的值复制给id
end;
5.ADO的差异
1. 更新,插入,删除,选择操作。对于更新有必要说要下,对于Oracle删除了Bulk类(主要用于大量数据插入到数据库中)
Oracle使用了OracleDataAdapt.Updata(dt),可以将dataTable类型的数据直接更新到数据库中,DT应与数据库的表具有相同的结构。
2.参数化,参数化的目的在于防止漏洞攻击,SQL在sql语句中使用的是@name表示变量名,Oracle则用的是:name表示变量名,实例如下
SQL参数化:string sql = "insert into studentinfo(stuname,stusex) values(@name,@sex);";
SqlParameter[] op = new SqlParameter("@name","liuc"),
Oracle参数化设置:string sql = "insert into studentinfo(stuname,stusex) values(:name,:sex)";
OracleParameter[] op = new OracleParameter(":name","liuc"),
oracle数据库使用心得之与SQL serve数据库的差异的更多相关文章
- SQL serve 数据库--视图、事物、分离附加、备份还原
视图是数据库中的一种虚拟表,与真实的表一样,视图包含一系列带有名称的行和列数据.行和列数据用来自定义视图的查询所引用的表,并且在引用视图时动态生成. 视图只能用来查询,不能增删改:不允许出现重复列 ...
- C#连接Sql Serve数据库及增,删,改操作
一:连接. string sqlconn = "server=主机名;database=数据名;integrated security=true" //integrated sec ...
- SQL Serve数据库排序空值null始终前置的方法
[转:http://blog.knowsky.com/233986.htm] [sqlserver]: sqlserver 认为 null 最小. 升序排列:null 值默认排在最前. 要想排后面,则 ...
- sql serve 数据库游标的使用
什么是游标? 通俗来讲,个人理解,游标是对一个查询结果集,每次取出一条数据进行处理操作. 使用场景: 例如,我们要修改一个表300条数据,且每条数据修改的内容不一样,那么平时用的update ...
- 5、SQL Server数据库、T-SQL
SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...
- SQL Server 数据库的安全管理(登录、角色、权限)
---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务 ...
- SQL Server 数据库项目
ylbtech-.NET Framework: SQL Server 数据库项目 SQL Server 数据库项目 类型:SQL Server 用于创建 SQL Server 数据库的项目 1. 新建 ...
- sql server数据库状态监控
sql server数据库监控 转自:https://www.cnblogs.com/seusoftware/category/500793.html 6. SQL Server数据库监控 - 如 ...
- SQL Server数据库字段类型说明
SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...
随机推荐
- Struts2使用小问题-NoSuchFieldException
五月 12, 2017 4:55:14 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn 警告: couldn't clear to ...
- [js高手之路]性能优化技巧 - 缓存与函数重载实战
所谓缓存,通俗点讲就是把已经做过的事情结果先暂时存起来,下次再做同样的事情,不用再重新去做,只要把之前的存的结果拿出来用即可,很明显大大提升了效率.他的应用场景非常广泛.如: 1.缓存ajax结果,大 ...
- 每次启动懂maven项目都必须关闭javaw.exe进程
最近几天一致在搞配置问题,今天总于解决了.下面说问题: 我发现我每次配置完maven build的goals运行,总是会出现TOMCAT绑定接口问题,我做的方法就是不断地关掉JAVAw.exe进程.但 ...
- Be the Best of Whatever You Are
If you can't be a pine on the top of the hill, Be a scrub in the valley—but be The best little scrub ...
- 短视频服务大PK,阿里云、腾讯云、又拍云、七牛云、金山云5强横向对比
继直播后,短视频又再次爆发,在这个风口,国内的各大云厂商也都相继推出了自己的一站式短视频解决方案.上周由于公司短视频功能开发的需要,对比了阿里云.腾讯云.又拍云.七牛云.金山云5家的短视频服务. 先介 ...
- exjs上传图片异常:com.jspsmart.upload.SmartUploadException: File can't be saved (1120).
错误: 文件名格式不对:未命??.jpg SmartUpload mySmartUpload = new SmartUpload(); com.jspsmart.upload.File myFile ...
- 网络协议UDP
------------------------------互联网协议与协议族------------------------------tcp/ip协议介绍:计算机网络协议,不同类型不同厂家之间的终 ...
- javascript学习笔记-4
document.getElementByTagName返回的是一个NodeList,这个NodeList和js数组很类似,都可以使用下标读取,如:array[0],但他们也有不同,不同在于不能对No ...
- .net基础第一天
.net基础 <head>+控制类标签 +<head> 1 <body>+网页要显示的内容+</body> <body +空格+bgcolor= ...
- Project 10:简单图像的绘制
目标:绘制如图图像 #include <stdio.h> int main() { int n,i,j,o,k=0; printf("请输入一个数:"); scanf( ...