zoukankan      html  css  js  c++  java
  • C#与Oracle数据库

    一.连接Oracle数据库

    1. 安装客户端: oracle数据库搭建在远程服务器上,本地只需要装个客户端,然后在安装目录下(D:appfangsproduct12.1.0client_3NetworkAdmin ,不一定是D盘) 配置tnsnames.ora,配置可以参考同目录下的Sample 文件夹中的内容。就是指明连接名,远程ip,servicename/SID。 然后可以利用sql develper工具打开数据库,查看数据库中的所有内容。
    2. c#程序通过ADO.NET连接:  首先创建连接字符串 : string connStr ="DATA SOURCE=***;PASSWORD=***;USER ID=**" ,以及后续的ADO.NET 操作就可以连接上数据库了。
    3. 获取数据:参考 MSDN MSDN ado.net

      I.       建立数据库连接,conn.open()

      II.      创建DataAdapter,这是数据库与DataSet对象之间的连接

      III.     声明并创建一个DataSet对象实例,然后才能开始加载数据,该名称可以包含若干独立的表

      IV.    DataAdapter提供Fill,与FillSchema方法。

      FillSchema方法会加载一些数据表信息,列名,约束等。

      V.      DataSet中的Tables集合内独立的DataTable对象来提供数据

      VI.    DataTables.Row可以访问每一行     

    二 C#中的数据类型与 Oracle 数据库字段类型对应关系

    参考此篇文章

    特别注意的是oracle数据库中 Number(10,1)这种类型的就可以用decimal  


    三.sql

    1.一 中需要进行sql的传入,所以这里讲下sql 字符串的写法。

    1. string sql=@"";:@:C#中特殊的字符串声明方式,叫做 “逐字字符串”(verbatim strings),使用这个符号会告诉编译器这是个逐字字符串,它本身常用于写指定文件或目录的路径,因为它会通知编译器将 ’‘作为文本常量而不是转义字符。在这里使用它是因为 sql语句可能很长,他支持换行写字符串
    2. 传参数给sql : string sql = @"nsert  into A Values(:ID_NUM) 用 :表明这是个变量,这是oracle数据库的表达方式。其他数据库使用其他标示方式,如sqlserver使用@。注意这里的参数名不能使oracle数据库的关键词,否则会报错,显示这个参数名无效 。
    3. sql 语句加 常量:eg. where a>2 ,将2定义为 类 Constants中的一个变量 count 。就可以写成 where a> '" + Constants.count + @"'  一定要注意空格,否则可能识别不出关键词 
    备注:在c#中写sql语句时,先将sql语句放在sql developer中执行,确保sql语法没有错误,再写到程序中。像上面提到的 传参 用 “:”标记,sql developer中都是可以检查出来的

    2.sql 传参格式

    数据库中字段定义一般会设定长度,写数值进去的时候一般位数不够,会补齐空格。

    当我们执行查询、插入等数据库操作时,如果是直接赋值,oracle数据库会补齐/识别出不够的位数。但是如果使用传参数值的方法,oracle数据库则不会这么做。那么就需要补齐空格,才能判断相等条件。

    eg.数据表A 的字段 ID CHAR(5)存储了某值为 A012

    你执行 select *from A where ID=:ID

    然后 oracleAccess.addParameter(":ID","A012")这样的查询语句是查询到 ID为A012的数据的。应该修改为

    select *from A where ID=RPAD(:ID,5),这样会补齐空格的



  • 相关阅读:
    AJAX
    JQUERY基础
    PHP 数据库抽象层pdo
    会话控制:session与cookie
    php 如何造一个简短原始的数据库类用来增加工作效率
    php 数据访问(以mysql数据库为例)
    面向对象设计原则
    php 设计模式 例子
    PHP中静态与抽象的概念
    键盘的按钮键名
  • 原文地址:https://www.cnblogs.com/stoneFang/p/6715324.html
Copyright © 2011-2022 走看看