在ASP中利用Oracle Object for OLE访问Oracle 8

在ASP中利用Oracle Object for OLE访问Oracle 8,第1张

ASP(Active Server Pages)是微软公司为开发互联网络应用程序所提出的工具之一 它是一种类似HTML(Hypertext Markup Language超文本标记语言) Script与CGI(Common Gateway Interface通用网关接口)的结合体 但是其运行效率却比CGI更高 程序编制也比HTML更方便且更有灵活性 程序安全性及保密性远比Script好 因此ASP是目前网页开发技术中最容易学习 灵活性最大的开发工具 ASP内置的ADO组件是微软公司开发的互联网络数据库存取解决方案 也是ASP存取数据库的重要功臣 ADO通过ODBC访问数据库 从理论上讲ADO能访问各种ODBC所支持的数据库 如Microsoft SQL Server Access Foxpro Oracle Dbase等 然而在实践中我们发现ADO可以完全支持Microsoft SQL Server和Acess 然而对于Oracle就有些困难了 笔者在实践中利用ADO访问Oracle 结果发现ADO不能访问Oracle 的数字型字段 并且发现ADO访问Oracle 的速度极慢 为了解决利用ASP访问Oracle 的速度及其他技术问题 笔者尝试了利用Oracle Object for OLE访问Oracle 结果完全取得了笔者预期的结果 Oracle Object for OLE是Oracle公司为了客户端存取数据库所发展的一个重要的产品 它以Windows / /NT为基础 共所有与OLE兼容的应用程序访问Oracle数据库 它是没有用户界面的OLE Server 其所包含的Oracle Objects Server是ASP访问Oracle数据库的重要功臣之一 要通过Oracle Objects Server来访问Oracle 数据库 除了基本的Web服务器与ASP等软件外 还必须确定Web服务器已经安装了Oracle Object for OLE软件 其所需的软件包括 Neork Protocol Adapter Oracle Object for OLE X SQLNet Client X或Oracle Net Client X SQLPlus及Oracle ODBC Driver 在确定Web服务器已安装上述软件后 还必须利用SQLNet Client X或Oracle Net Client X进行数据库的连接测试并设置数据库别名(Database Alias) Oracle Objects Server共提供Oraclient Orasession Oraconnection OraDatabase OraDynaset OraSQLstmt OraField Oraparameter Oraparameter Array等九个对象供开发者使用 其功能与作用分述如下 .Oraclient对象 Oraclient对象是用来定义服务器端(Client或Workstation)的范围 Oraclient会记录此服务器端的所有Orasession对象 Oraclient由系统根据需要自动建立 .Orasession对象 Orasession对象用来在程序中管理Oraconnection OraDatabase OraDynaset等对象 其建立方法如下 Set Orasession=Create( OracleInProcServer Xorasession ) .Oraconnection对象 Oraconnection对象表示对OraDatabase对象的连接 当需要建立OraDatabase对象时 系统会自动产生一个Oraconnection对象 反之 当与数据库断开连接时 Oraconnection对象自动释放 .OraDatabase对象 OraDatabase对象表示对数据库服务器的虚拟登录 其登录方法如下 Set Oradadabase=Orasession Dbopendatabase_ ( 数据库别名 用户名称/密码 ) .OraDynaset对象 OraDynaset对象会将数据库服务器符合SELECT命令的数据加以存储在客户端的缓冲区 让用户浏览或更新 最后将结果写回到服务器 其方法如下 SetOraDynaset=OraDatabase DbcreateDynaset( SQL语句 ) .OraSQLstmt对象 OraSQLstmt对象通常用来运行SQL命令 或是调用存储过程 其用法如下 Set Orasqlstmt=Oradatabase createSQl( SQL语句 ) .OraField对象 OraField对象表示在OraDynaset对象中的某个字段或数据项目 他通过Value属性设置或取得OraDynaset对象中的某个字段值 .Oraparameter对象 Oraparameter对象表示一个在SQL命令或PL/SQL程序区块中所附加的变量 .Oraparameter Array对象 Oraparameter Array对象是Oraparameter对象的数组类型 Oraparameter Array对象可以间接通过OraDatabase对象的Oraparameter数据集合来增加 存取或删除某个变量  下面举一具体例子说明如何在ASP中利用Oracle Object for OLE访问Oracle 笔者编写了一个在ASP中利用Oracle Object for OLE 查询Oracle 数据库 并进行分页显示的程序 由于Orasession对象的属性中没有控制分页的属性 应此笔者自编了分页控制的程序 以下共两个ASP文件(query asp和query asp) query asp文件先取得数据库表的内容 然后计算分页的页数 如果页数超过一页 则交由query asp处理 其程序代码如下 query asp <% ‘连接数据库 set orasession=createobject("oracleinprocserverxorasession") set oradatabase=orasessiondbopendatabase("orant","scotter/tiger",0) ‘设置查询条件 sql="select from cq_hjwj " set session(oradynaset)=oradatabasedbcreatedynaset(sql,0) ‘设置页长 pagesize=15 if session(oradynaset)recordcount=0 then responsewrite "无符合条件的数据" else responsewrite"查询结果" ‘计算页数 pages=int(session(oradynaset)recordcount/pagesize) if pagespagesize=session(oradynaset)recordcount then pages=int(session(oradynaset)recordcount/pagesize) else pages=int(session(oradynaset)recordcount/pagesize)+1 end if if request("page")="" then page=1 else page=cstr(request("page")) end if responsewrite"共"&pages&"页,目前第"&page&"页" responsewrite"" for i=0 to session(oradynaset)unt - 1 responsewrite"" responsewrite session(oradynaset)fields(i)name responsewrite"" next responsewrite "" startrow=(page-1)pagesize+1 endrow=pagepagesize oradynasetmoveto startrow for j=startrow to endrow responsewrite"" for i=0 to session(oradynaset)unt - 1 responsewrite"" responsewrite session(oradynaset)fields(i)value responsewrite"" next responsewrite"" session(oradynaset)dbmovenext if session(oradynaset)eof then exit for next responsewrite"" end if if page> then response write 第一页 response write 上一页 end if if cint(page) response write 下一页 response write 最后页 end if set orasession=nothing %>  query asp <% 设置页长 pagesize= if session(oradynaset) recordcount= then response write 无符合条件的数据 else response write 查询结果 计算页数 pages=int(session(oradynaset) recordcount/pagesize) if pagespagesize=session(oradynaset) recordcount then pages=int(session(oradynaset) recordcount/pagesize) else pages=int(session(oradynaset) recordcount/pagesize)+ end if if request( page )= then page= else page=cstr(request( page )) end if response write 共 &pages& 页 目前第 &page& 页  response write for i= to session(oradynaset)unt response write response write session(oradynaset) fields(i) name response write next response write startrow=(page )pagesize+ endrow=pagepagesize oradynaset moveto startrow for j=startrow to endrow response write for i= to session(oradynaset)unt response write response write session(oradynaset) fields(i) value response write next response write session(oradynaset) dbmovenext if session(oradynaset) eof then exit for next response write end if if page> then response write 第一页 response write 上一页 end if if cint(page) response write 下一页 response write 最后页 end if set orasession=nothing %>

如果用CMake编译工程,则使用选项CMAKE_BUILD_TYPE=Debug:

这样做g++编译时就会包含选项-g。如果要同时包含-ggdb选项,可以设置变量CMAKE_CXX_FLAGS_DEBUG。

%e - insert coredumping executable name into filename 添加导致产生core的命令名

%p - insert pid into filename 添加pid(进程id)

运行程序,生成core文件。下面的命令强制生成core文件:

或者进入gdb后

file从文件exec加载symbol和executable, core从core中加载coredump

如果是调试Core的机器(host)不是生成Core的机器(target),则动态库可能不在程序指定的位置上。这时需要指定动态库的位置。

首先用info sharedlibrary,可以查看动态库的symbol是否加载正确

如果库在host上的布局与在target上的布局相同,则使用solib-absolute-prefix比较方便。

target上:

host上:

则可以设置solib-search-path为:

solib-absolute-prefix有个更常用的别名sysroot,所以如下的命令是一样的:

设置solib-search-path可以指定多个路径,路径之间用:隔开。

在多线程的环境下,可以用info threads显示所有线程,thread指定线程为当前线程。

GDB 常用法

GDB 调试Coredump问题

嵌入式开发中GDB调试Coredump问题

嵌入式开发中GDB串口远程调试

用backtrace()调试coredump问题

Valgrind memcheck 用法

Address Sanitizer 用法

段错误及GDB Coredump调试方法

>

以上就是关于在ASP中利用Oracle Object for OLE访问Oracle 8全部的内容,包括:在ASP中利用Oracle Object for OLE访问Oracle 8、GDB 调试Coredump问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10200081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存