网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle客户端编程.
.在oracle中编写树级代码.
.Oracle调优(入门及提高篇).
.Oracle 数据库向 MS SQL Server .
.Oracle10G Physical Standby Dat.
.Oracle的分区管理.
.Red Hat Linux 7.1使用手册(下).
.archive 相关语法.
.理解oracle的网络结构 解决连接问.
.Oracle丰富认证体系 新增资深专家.
.oracle 9i 的内存泄漏问题.
.突破oracle for win2K的2G内存限.
.管理Oracle OLAP时清除通往OLAP的.
.如何在硬碟建置Linux系统之fdisk.
.Oracle数据库异构服务原理及实例.
.Oracle中用GROUPING SETS分组自定.
.问答方式轻松学习Oracle数据库中.
.IBM力推System P5服务器 获甲骨文.
.使CREATETABLEASSELECT能支持ORD.
.如何实现取出文件中特定的行内容.

用ODP.NET执行SQL读取数据库记录的方法

发表日期:2008-2-9



  本文我们通过一个Oracle提供的示例来讲解利用利用ODP.NET 执行SQL语句访问数据库时设置参数。
  首先创建一个C#应用程序,为了简单和方便可以创建一个控制台程序。
  然后第一件事是添加对Oracle ODP.NET的引用。打开项目的解决方案治理页,然后在引用目录上点右键并选择添加引用菜单。选择ORACLE_HOME\bin\Oracle.DataAccesss.dll。
  为了能够使用ODP.NET 我们在程序前应该引入相关的命名空间。
  using Oracle.DataAccess.Client;
  using Oracle.DataAccess.Types;
  
  首先需要建立到数据库的连接,在上一文章中已经讲过这方面的基本知识。
  
  接下来的工作是建立表,SQL语句为:CREATE TABLE multimedia_tab(thekey NUMBER(4) PRIMARY KEY, story CLOB, sound BLOB)
  
  然后插入一条记录进行测试,SQL语句为:INSERT INTO multimedia_tab values(1,'This is a long story. Once upon a time ...','656667686970717273747576777879808182838485')
  
  建表和插入记录都使用OracleCommand 对象的 ExecuteNonQuery方法来执行SQL 语句。
  
  在ODP.NET 中使用参数的方法为:
  ◎通过SQL语句创建一个OracleCommand,在SQL语句中参数使用:1,:2来代替,分别表示第一个,第二个参数。
  ◎在OracleCommand对象中添加参数。
  ◎设置参数的值。
  ◎调用OracleCommand的ExecuteNonQuery执行SQL语句。
  ◎从参数对象中得到返回的值。
  
  下面是代码:
  // 创建OracleCommand 对象
  OracleCommand cmd = new OracleCommand(
    "begin select story into :1 from multimedia_tab where thekey = 1; end;");
  cmd.Connection = con;
  
  //把命令类型设置为Text,表示执行SQL语句
  cmd.CommandType = CommandType.Text;
  
  // 添加参数,第一个参数表示参数名称,第二个参数表示参数类型,
  OracleParameter param = cmd.Parameters.Add("clobdata",
    OracleDBType.Clob);
  
  // 设置参数为输出类型,假如是输入参数则设置为:ParameterDirection.InputOutput
  param.Direction = ParameterDirection.Output;
  
  // Execute command
  try
  {
    // 执行SQL语句
    // 假如是输入参数,那么这时SQL中的:1 被替换为OracleParameter param 对象所代表的值
    cmd.ExecuteNonQuery();
    // 因为参数是输出参数,所以可以通过得到参数的值来获取SQL语句中参数所表示的值
    string lob_data = (string) ((OracleClob)(cmd.Parameters[0].Value)).Value;
  
    // 显示结果
    Console.WriteLine("Data is: " + lob_data);
  }
  catch (Exception e)
  {
    Console.WriteLine(e.Message);
  }
  
  在执行设置了参数的SQL语句时可以使用ExecuteReader 、ExecuteNonQuery 、ExecuteScalar 来执行SQL语句。
  
  参数的类型可以为:InputOutput、Output、ReturnValue 。
  
  
  在ODP.NET中还有一项功能,就是利用数组绑定到参数上来一次性插入多个记录,这里讲一下多个记录同时插入时如何绑定一个数组到参数上。
  
  // 设置数组
  int[] myArrayDeptNo = new int[3]{10, 20, 30};
  
  // 创建OracleCommand 对象
  cmd.CommandText = "insert into dept(deptno) values (:deptno)";
  // 设置数组大小
  cmd.ArrayBindCount = 3;
  
  // 创建参数
  OracleParameter prm = new OracleParameter("deptno", OracleDbType.Int32);

  prm.Direction = ParameterDirection.Input;
  prm.Value   = myArrayDeptNo;
  
  // 添加参数到OracleCommand对象中
  cmd.Parameters.Add(prm);
  
  // 执行,这时候有三条记录被插入
  cmd.ExecuteNonQuery();
  
  
  2003-11-17 14:34:01otn 对内容进行了修改
  ------------------------签----名----
  $-)
    movb  $0x88,%ah
    int  $0x15
    movw  %ax,(02)
    movw  $SYSSEG, %ax
上一篇:PL/SQL的异常处理机制的初步探讨 人气:673
下一篇:Oracle中的处理CLOB字段的动态PL/SQL 人气:777
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐