📄 01_9_14_11.asp.html
字号:
<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>计算机世界网-用VC 开发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法</TITLE></HEAD>
<style>
.a14{font-size:14px;text-indent:25px;line-height:20px}
.f{font-size:18px;color=#0f3ccd}
img{border:0px;}
td,p,input{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<center>
<BODY topmargin=2 leftmargin=0>
<style>
.v12{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<style>
.v13{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v12{font-size:13px;color:"#4C029C";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<!--头-->
<table align=center cellpadding="0" cellspacing="0" border="0" width="767">
<tr><td valign=bottom>
<table cellpadding="0" cellspacing="0" border=0>
<tr><td valign=top><img src="../../../../../center/image/ccwlogo.gif"></td></tr>
<tr><td height="27" valign=top><img src="../../../../../center/image/knowledge.gif" width="207" height="27"></td></tr>
</table></td>
<td valign=bottom width=556 bgcolor="#4c029c" height=96>
<table cellpadding="0" cellspacing="0" border=0 width=556 bgcolor="#4c029c" height=96>
<tr><td height=25 valign=bottom bgcolor="#ffffff" colspan=2 ><img src="../../../../../image2002/top.gif" usemap="#F"></td></tr>
<tr valign=middle >
<td align=center valign=middle height="60" align=center>
<!-- <a href="http://www.ccw.com.cn/search/" target=_blank><img src="../../../../../img2/esearch.GIF" border=0 width=468 height=60></a> --><a href="http://www.ccw.com.cn/html/search/thememail/" target=_blank><img src="../../../../../img2/topbanner_thememail.GIF" border=0 width=468 height=60></a>
</td>
<td align=center width=15%>
<table width=95%>
<tr><td><a href="mailto:center@ccw.com.cn?subject=我要投稿:" target=_blank><font class=v13>我要投稿</a><br><a href="mailto:center@ccw.com.cn?subject=编读往来"><font class=v13>编读往来</a><br><a href="javascript:AddBookMark('计算机世界网首页')"><font class=v13>加入收藏</a></font></td></tr>
</table>
</td>
</tr>
<tr><td bgcolor="#ffffff" height=1 colspan=2 ></td></tr>
<tr><td bgcolor="#b4aafc" height=2 colspan=2 ></td></tr></table>
<map name="F">
<area href="http://www.ccw.com.cn/" shape="rect" coords="29, 3, 61, 18" target=_blank>
<area href="http://www.ccw.com.cn/news1/" shape="rect" coords="72, 3, 143, 18" target=_blank>
<area href="http://www.ccw.com.cn/center/" shape="rect" coords="155, 2, 216, 18" target=_blank>
<area href="http://www.ccw.com.cn/work/" shape="rect" coords="225, 2, 299, 18" target=_blank>
<area href="http://www.ccw.com.cn/search/" shape="rect" coords="310, 3, 364, 19" target=_blank>
<area href="http://www3.ccw.com.cn/" shape="rect" coords="372, 2, 412, 19" target=_blank>
<area href="http://www2.ccw.com.cn/" shape="rect" coords="424, 2, 550, 18" target=_blank></map>
</td></tr>
<tr><td colspan=2 bgcolor="#b4aafc">
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr>
<td width=26% align=center><font class=v12>【2003年6月24日】 </font></td>
<td CLASS=V12> <a href="http://www.ccw.com.cn/center/topic.asp">专 题</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/tech.asp">技 术</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prod.asp">产 品</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/app.asp">应 用</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/net.asp">网 络</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prog.asp">编 程</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/skill.asp">技 巧</a> </td>
</tr>
</table>
</td></tr>
</table>
<table align=center width=728>
<tr><td align=center><br>
<h2><font color='#0f3ccd'>用VC开发基于ORACLE数据库应用程序的两种方法</font></h2>
</td></tr><tr><td align=right>01-9-14 下午 02:56:45<br><hr size=1 width=718 color=#f46240></td></tr></table><br>
<table align=center width=728><tr><td valign=top width=600>
<table width=100% ><tr>
<td class=a14><b>1. 引 言</b></td>
</tr></table><table width=100% ><tr><td class=a14>
ORACLE 公 司 自1979 年 推 出 基 于SQL 标 准的 关 系 数 据 库 产品 到1997 年 版 本8 的 推 出,ORACLE 数 据 库 以其 支 持 大 数 据 库、 多 用 户 的 高 性 能 事 务 处 理, 对 业 界各 项 工 业 标 准 的 支持, 完 整 的 安 全 和 完 整 性 控 制, 支持 分 布 式 数 据 库 和 分布 处 理, 具 有 可 移 植 性、 可 兼 容性 和 可 连 接 性 等 突 出 优点 倍 受 用 户 喜 爱, 根 据IDG1992 年全 球UNIX 数 据 库 的 市 场 报告,ORACLE 占 市 场 销 售 量 的50%。 而在 客 户 端 的 开 发 工 具 方面,Visual C++ 也 因 其 强 大 的 功 能和 高 度 的 灵 活 性 等 特 点 深 受 广 大 程 序 员 的 喜 爱, 因 此本 文 旨 在 介 绍 使 用Visual C++ 开 发 基 于ORACLE 数 据 库 应 用 程序 的 两 种 方 法。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <b>2. 使 用PRO*C 开 发 数 据 库 应 用</b></td>
</tr></table><table width=100% ><tr>
<td class=a14> <i>2.1 PRO*C 工 作 原 理 </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PRO 系 列 是ORACLE 公 司 提 供 的 在 第 三代 高 级 程 序 设 计 语 言 中 嵌 入SQL 语 句 来 访 问 数 据 库 的 一套 预 编 译 程 序, 包 括PRO*Ada、PRO*C、PRO*COBOL、PRO*Fortran、PRO*Pascal 和PRO*PL/I 六 种。 程 序 员 用 相 应 的 高 级 语 言 编 写 嵌 入SQL 语句 的PRO 源 程 序( 若 用C 语 言 则 称 为PRO*C 源 程 序) 后 运 行 相应 的 预 编 译 程 序, 把 嵌 入 的SQL 语 句 转 换 为 标 准 的ORACLE 调 用 并 生 成 目 标 源 程 序, 即 纯 高 级 语 言 格 式 的 源 程序, 然 后 就 可 以 将 这 些 源 程 序 加 入 用 户 的 程 序 中 调用, 其 处 理 过 程 如 下 图。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
ORACLE 预 编 译 程 序 提 供 如 下 功 能: </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑴ 能 用 六 种 通 用 的 高 级 程 序 设计 语 言 中 的 任 何 一 种 编 写 应 用 程 序。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑵ 遵 循ANSI 标 准, 在 高 级 语 言 中嵌 入SQL 语 句。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑶ 可 采 用 动 态SQL 方 法, 让 程 序 在运 行 时 接 受 或 构 造 一 个 有 效 的SQL 语 句。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑷ 实 现ORACLE 内 部 数 据 类 型 和 高 级语 言 数 据 类 型 之 间 的 自 动 转 换。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑸ 可 通 过 在 应 用 程 序 中 嵌 入PL/SQL 事 物 处 理 块 来 改进 性 能。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑹ 能 在 程 序 行 和 命 令 行 上 指 定所 需 要 的 预 编 译 可 选 项, 并 可 在 预 编 译 的 过 程 中 改 变它 们 的 值。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑺ 能 全 面 检 查 嵌 入 的SQL 数 据 操纵 语 句 和PL/SQL 块 的 文 法 和 语 义。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑻ 可 用SQL*Net 并 行 存 取 多 个 地 点的ORACLE 数 据 库。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑼ 可 把 数 组 作 为 输 入 和 输 出 程序 变 量 使 用。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑽ 能 对 应 用 程 序 中 的 代 码 段 进行 条 件 预 编 译。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⑾ 提 供 了 较 强 的 异 常 处 理 功能。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
由 此 可 见, 通 过 预 编 译 程 序 与其 它 高 级 语 言 的 结 合, 既 可 以 利 用SQL 强 有 力 的 功 能 和灵 活 性 为 数 据 库 应 用 系 统 的 开 发 提 供 强 有 力 的 手 段,又 可 以 充 分 利 用 高 级 语 言 自 身 在 系 统 开 发 方 面 的 优势, 从 而 提 供 一 个 完 备 的 基 于ORACLE 数 据 库 应 用 程 序 的开 发 解 决 方 案。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> <i>2.2 在VC 中 使 用PRO*C </i></td>
</tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
每 个PRO*C 源 文 件 一 般 由 程 序 头 和程 序 体 两 部 分 组 成。程 序 头 包 含 宿 主 变 量(SQL 语 句 中所 包 含 的 变 量) 说 明、通 讯 区 定 义 和C 外 部 表 示 符 的 说明 等。 程 序 体 一 般 是 由 若 干 函 数 组 成, 这 些 函 数 内 含有SQL 语 句( 以EXEC SQL 起 头 的 语 句)。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PRO*C 支 持 的 数 据 类 型 包 括VARCHAR2( 变 长 字 符 串)、NUMBER( 二 进 制 数)、INTGER( 有 符 号 整数)、FLOAT( 浮 点 数)、STRING( 以NULL 结 尾 的 字 符 串)、VARNUM( 变 长 二 进 制 数)、LONG( 变 长 字 符 串)、VARCHAR( 变 长 字 符 串)、ROWID( 二 进 制 值)、DATE( 定长 日 期/ 时 间 值)、VARRAW( 变 长 二 进 制 数 据)、RAW( 定 长 二 进制 数 据) 、LONGRAW( 变 长 二 进 制 数 据)、UNSIGNED( 无 符 号 整 数)、ONGVARCHAR( 变 长 字 符 串)、LONGVARRAW( 变 长 二 进 制 数 据)、CHAR( 定 长 字 符串)、CHARZ(C 中 定 长 以NULL 结 尾 的 字 符 串)、MLSLABEL( 变 长 二 进制 数 据)。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
在PRO*C 中 不 能 使 用'l' 或'u' 作 词 尾或'0x' 作 词 头 修 饰 常 量; 在SQL 语 句 中 使 用 单 引 号 来 定 义字 符 串, 用 双 引 号 来 定 义 特 殊 的 或 小 写 字 符 的 标 识 符( 如 表 名 等);SQL 语 句 中 不 允 许 使 用C 中 的 寻 址、 间 接、 位逻 辑、 复 合 赋 值、?=、-、++、%、<<、>> 操 作 符 并 且 用NOT、AND、OR、= 代 替!、&&、||、==。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
下 面 的 程 序 是 一 个 联 结 数 据 库的PRO*C 源 程 序 例 子。 </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include // 声 明SQL 通 讯 区</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
EXEC SQL BEGIN DECLARE SECTION;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
VARCHAR username[20]; // 声 明 宿 主 变 量</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
VARCHAR password[20];</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
VARCHAR dbname[20];</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
EXEC SQL END DECLARE SECTION;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
void db_connect()</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
strcpy((char *)username.arr,"SCOTT");</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -