zoukankan      html  css  js  c++  java
  • 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"),

  • 相关阅读:
    3、Java基础类
    2、面向对象
    1、Java基础
    0.Eclipse
    【Python】UI自动化-1
    【Python】爬虫-2
    【Python】爬虫-1
    【Python】socket编程-3
    【Python】socket编程-2
    【Python】socket编程-1
  • 原文地址:https://www.cnblogs.com/bufferflies/p/6068325.html
Copyright © 2011-2022 走看看