动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
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教程 ]的信息

本月文章推荐
.建立虚拟记忆体.
.自己动手写操作系统(一).
.不产生UNDO的情况.
.Oracle数据库中COALESCE函数使用.
.实例讲解Oracle的快速删除和快速.
.Oracle库的Hang.
.失而复得:Oracle数据库表空间恢.
.Oracle高级安全性.
.修改oracle的internal口令.
.如何查找含特定字符串的文件.
.深入讲解调整Oracle SGA大小的解.
.联机热备份失败后,如何打开数据.
.在Windows下管理Oracle9i 服务.
.Oracle数据库分析和解决ora-4030.
.SCO unix 下定时备份 Oracle dmp.
.深入探讨Oracle数据缓冲区内部机.
.用ORACLE*Forms 和ORACLE*Graphi.
.Oracle10G Physical Standby Dat.
.Oracle 的一些基本知识,应该知道.
.如何使用户没有telnet和ftp权限.

如何使用ADO访问Oracle数据库存储过程

发表日期:2008-2-9 |



  ---- 一、关于ADO
  
  ---- 在基于Client/Server结构的数据库环境中,通过OLE DB接口可以存取数据,但它定义的是低层COM接口,不仅不易使用,而且不能被VB,VBA,VBScript等高级编程工具访问。 而使用ADO则可以很轻易地使VB等编程语言直接访问数据(通过OLE DB接口)。ADO是基于面向对象方法的,其对象模型如下图所示(略)
  
  ---- 由上图可见,ADO对象模型总共才包括六个对象,相对于数据访问对象(DAO)来说简单得多。因此实际中经常使用它来访问数据库。
  
  ---- 二、ADO访问数据库实例
  
  ---- 下面,我们以Oracle为例,使用VB6.0来访问其数据库中的存储过程。在此例中,我们首先在Oracle数据库上创建有两个存储过程,一个不带参数,另一个带有参数。然后,使用ADO来访问这两个存储过程。步骤如下:
  
  ---- 1. 在Oracle服务器上运行以下DDL脚本:
  
  DROP TABLE person;
  CREATE TABLE person
  (ssn NUMBER(9) PRIMARY KEY,
  fname VARCHAR2(15),
  lname VARCHAR2(20));
  INSERT INTO person VALUES(555662222,'Sam','Goodwin');
  INSERT INTO person VALUES(555882222,'Kent','Clark');
  INSERT INTO person VALUES(666223333,'Jane','Doe');
  COMMIT;
  /
  
  ---- 2. 在Oracle服务器上创建包(package):
  CREATE OR REPLACE PACKAGE packperson
  AS
  TYPE tssn is TABLE of NUMBER(10)
  INDEX BY BINARY_INTEGER;
  TYPE tfname is TABLE of VARCHAR2(15)
  INDEX BY BINARY_INTEGER;
  TYPE tlname is TABLE of VARCHAR2(20)
  INDEX BY BINARY_INTEGER;
  
  PROCEDURE allperson
  (ssn OUT tssn,
  fname OUT tfname,
  lname OUT tlname);
  PROCEDURE oneperson
  (onessn IN NUMBER,
  ssn OUT tssn,
  fname OUT tfname,
  lname OUT tlname);
  END packperson;
  /
  
  ---- 3. 在Oracle服务器上创建以下包体(package body):
  CREATE OR REPLACE PACKAGE BODY packperson
  AS
  PROCEDURE allperson
  (ssn OUT tssn,
  fname OUT tfname,
  lname OUT tlname)
  IS
  CURSOR person_cur IS
  SELECT ssn, fname, lname
  FROM person;
  percount NUMBER DEFAULT 1;
  BEGIN
  FOR singleperson IN person_cur
  LOOP
  ssn(percount) := singleperson.ssn;
  fname(percount) := singleperson.fname;
  lname(percount) := singleperson.lname;
  percount := percount + 1;
  END LOOP;
  END;
  PROCEDURE oneperson
  (onessn IN NUMBER,
  ssn OUT tssn,
  fname OUT tfname,
  lname OUT tlname)
  IS
  CURSOR person_cur IS
  SELECT ssn, fname, lname
  FROM person
  WHERE ssn = onessn;
  percount NUMBER DEFAULT 1;
  BEGIN
  FOR singleperson IN person_cur
  LOOP
  ssn(percount) := singleperson.ssn;
  fname(percount) := singleperson.fname;
  lname(percount) := singleperson.lname;
  percount := percount + 1;
  END LOOP;
  END;
  END;
  /
  
  ---- 4. 在 VB 6.0 中打开一个新的工程,缺省创建表单 Form1。

  ---- 5. 在表单上添加二个按钮,cmdGetEveryone和cmdGetOne。
  
  ---- 6. 在代码窗口中添加以下代码:
  
  Option EXPlicit
  Dim Cn As ADODB.Connection
  Dim CPw1 As ADODB.Command
  Dim CPw2 As ADODB.Command
  Dim Rs As ADODB.Recordset
  Dim Conn As String
  Dim QSQL As String
  Dim inputssn As Long
  
  Private Sub cmdGetEveryone_Click()
  Set Rs.Source = CPw1
  Rs.Open
  While Not Rs.EOF
  MsgBox "Person data: " & Rs(0) & ",
  " & Rs(1) & ", " & Rs(2)
  Rs.MoveNext
  Wend
  Rs.Close
  End Sub
  
  Private Sub cmdGetOne_Click()
  Set Rs.Source = CPw2
  inputssn = InputBox(
  "Enter the SSN you wish to retrieve:")
  CPw2(0) = inputssn
  Rs.Open
  MsgBox "Person data: " & Rs(0) & "
  , " & Rs(1) & ", " & Rs(2)
  Rs.Close
  End Sub
  
  Private Sub Form_Load()
  '使用合适的值代替以下用户ID,
  口令(PWD)和服务器名称(SERVER)
  Conn = "UID=*****;PWD=*****;driver=" _
  & "{Microsoft ODBC for
  Oracle};SERVER=dseOracle;"
  Set Cn = New ADODB.Connection
  '创建Connection对象
  With Cn
  .ConnectionString = Conn
  .CursorLocation = adUseClient
  .Open
  End With
  QSQL = "{call packperson.allperson(
  {resultset 9,ssn,fname,"_
  & "lname})}"
  Set CPw1 = New ADODB.Command
  '创建Command对象
  With CPw1
  Set .ActiveConnection = Cn
  .CommandText = QSQL
  .CommandType = adCmdText
  End With
  QSQL ="{call packperson.oneperson(?,
  {resultset 2,ssn, "_
  & " fname,lname})}"
  '调用存储过程
  Set CPw2 = New ADODB.Command
  With CPw2
  Set .ActiveConnection = Cn
  .CommandText = QSQL
  .CommandType = adCmdText
  .Parameters.Append.CreateParameter(
  ,adInteger, _
  adParamInput)
  '添加存储过程参数
  End With
  Set Rs = New ADODB.Recordset
  With Rs
  .CursorType = adOpenStatic
  .LockType = adLockReadOnly
  End With
  End Sub
  
  Private Sub Form_Unload(Cancel As Integer)
  Cn.Close
  Set Cn = Nothing
  Set CPw1 = Nothing
  Set CPw2 = Nothing
  Set Rs = Nothing
  End Sub
  
  ---- 7. 运行程序。当点下cmdGetEveryone按钮时,程序调用Oracle数据库中不带参数的存储过程packperson.allperson,点下cmdGetOne按钮时调用packperson.oneperson存储过程。
上一篇:sys不能以管理员的身份登陆 人气:828
下一篇:Delphi 3.0中连接数据库的三种方式 人气:633
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号