问题标签 [occi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - oracle::occi::ResultSet::next() 使我的程序崩溃
我有一个在 Windows 7 上运行的 64 位 C++ 服务器应用程序,当它在数据库上进行选择并在结果集上调用 next() 时,进程简单地死掉,在 ResultSet->next( )。数据库上的写入工作没有问题,读写都在 32 位版本上工作
我正在使用即时客户端和 SDK 附带的 11.2 版本的 win64 oracle 库
编辑:这是最简单的代码
IRecordSet 只是 DB 驱动程序常用功能的接口,如 next、getField,在此处实现
其中 m_pResultSet 是 oracle::occi::ResultSet*
c++ - 如何使用矢量在 OCCI 中设置数据缓冲区?
我有一个名为 mytable2 的简单表,只有一列,名称为 varchar2(20)。我现在有一个存储为 std::string 向量的名称列表,要插入到表中。我想使用 executeArrayUpdate,所以我必须先执行 setDataBuffer。但是,正如我所见,人们总是使用 char[][20] 来设置数据缓冲区。
这让我很头疼,因为我这里有两个问题,第一个是将向量转换为数组,第二是将字符串转换为字符。
第一,我厌倦了使用 char[20] 的向量,这不能编译。谷歌搜索,他们说向量不能接受 char[],所以我将 std::string 的向量更改为 char* 的向量。
第二,我尝试使用“void* p=&names[0]”将向量转换为数组,正如有些人所说的那样,我们可以将向量用作数组。
我使用了stmt->setDataBuffer(1,mystring,OCCI_SQLT_STR,20,NULL),程序编译执行正常,但是当我“从mytable2中选择名称”时,它只显示了一些奇怪的字符。
以前有人遇到过类似的问题吗?我该怎么办?
我的代码很简单,如下所示:
c++ - 我哪里错了?为 DATE 设置数据缓冲区
我想使用以下代码在 oracle 中为 DATE 进行数组获取。它可以正常编译并正确导出所有其他数据类型,但 DATE 类型除外。该程序说“ora-32146 无法在空日期执行操作”。
任何人都可以看到我错在哪里?
c++ - 在 Linux 中使用 g++ 进行 OCCI 编译
我正在尝试使用 OCCI 库编译一个基本程序。
编译任务OK。
输出OK,生成test.o。但是,当我想链接目标文件时,使用以下命令,
链接任务失败,输出为:
我的环境简历:
- Ubuntu Linux 11.04
- gcc 版本 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
- ORACLE_HOME = /opt/oracle/product/10.2.0/db_1
- LD_LIBRARY_PATH = /opt/oracle/product/10.2.0/db_1/lib
- 甲骨文版本:10.2.0
你能帮我吗?,我真的需要在 Linux 中使用 OCCI 创建到 Oracle 的连接,我不想使用 Pro*C。
c++ - OCCI C++ 应用程序的 Visual Studio 调试运行时错误
我正在使用 Visual Studio 开发一个使用 OCCI 查询 Oracle 11g 数据库的 C++ 程序。目前这是一个非常简单的程序,只进行一次查询,但我一直遇到运行时错误。我首先尝试在 VS2010 中开发这个,下载 11.2.0.3 OCCI 文件,我得到一个与不在 oci.dll 中的 heap-alloc 过程的入口点相关的错误。我的印象是这个错误可能是因为我的 Oracle 客户端是 11.2.0.1。
由于出于支持原因无法将客户端升级到更高版本,我决定回退到使用 Visual Studio 2005,因为我在 Oracle 的 OCCI 文档中读到 vc8 版本的 OCCI 库和 DLL 已经安装在 11g 中客户。所以我将我的 C++/OCCI 程序移到 VS 2005,现在我得到一个不同的调试运行时错误:一个错误消息框说“应用程序无法正确初始化”,并且来自 VS 输出窗口中加载程序的消息说“ldrpWalkImportDescriptor () 未能探测 [ORACLE CLIENT DIR]\oci\lib\msvc\vc8\oraocci11d.dll 的清单,ntstatus 0xc0150002" 我没有看到 oraocci11d.dll 的清单文件,所以我很茫然如何解决这个问题。任何更精通 OCCI 的 VS 设置的人可以提出建议吗?提前致谢...
谢尔顿
c++ - 使用 OCCI 在 Oracle Database 11g 中存储无符号 64 位整数的最佳方法
我使用的是 11.2 版本,并且在表字段中没有直接支持 uint64。你建议在性能方面做什么?它必须是主键。
谢谢
c++ - 如何在 ORACLE DB 的结果集中返回空字符串(使用 sys_refcursor)
遇到问题后:
ORA-32108: 未指定最大列或参数大小
我研究了一下,发现了这两个问题:为什么 Oracle 9i 将空字符串视为 NULL?和Oracle 不区分空字符串和空字符串?.
这些问题解释了我得到的错误。但这让我想到了下一个问题——如何在 Oracle 的 ResultSet 中将空字符串作为字段值返回?
到目前为止,我所拥有的是:
- 创建语句
- 将输出参数注册为
oracle::occi::OCCICURSOR
execute
该声明- 我调用
GetCursor
使用返回的结果集
由于execute
上述错误,失败。
那么,如何在结果集中返回这样的字段,其值为空字符串(''
)?
换句话说,我不知道如何应用此处指定的操作-它是服务器端的吗?或者我应该在我的代码中添加一些东西?或者在存储过程中,返回这个结果集?
我使用 OCCI(Oracle C++ 调用接口)。我当前的解决方法是返回一个包含单个空格 ( ' '
) 的字符串,但我不喜欢它。
oracle - OCCI getString 超过 16 个字节 - 访问冲突
我正在使用 OCCI 连接到 Oracle 数据库。当我打电话时:
我收到 16 个字节或更多,存在访问冲突。
我在任何网站上都找不到答案。有谁知道为什么会这样?
oracle-call-interface - 使用 OTL (OCCI, OCI) 将二进制数据插入 Varchar2
如何使用 OTL 将可能是二进制的数据插入 Varchar2?(OCI/OCCI 当然可以)
背景:我们有很多 Varchar2 列,它们通常不是二进制的,但有一天可能会发生(我特别关心 \0 和 UTF-8)
星期二:我发布了这个相关问题: 如何在 Oracle Varchar2 中存储字节,并将 ASCII 视为文本
c++ - 显示简单 Oracle 查询字符串时出现“访问冲突”错误(VS10 Exp C++)
我正在努力解决有关使用 occi 通过 C++ 向 Oracle 数据库运行 SQL 语句的问题。我的代码如下:
显示的错误是:
MyDatabaseApp.exe 中 0x1048ad7a (msvcp100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xccccccd0。
我的程序在以下代码行的“xstring”内停止:
如果我将查询更改为:
和循环语句:
它工作正常,没有错误。我认为这是因为获取整数只是返回一个原语,但是当一个对象被返回时它会爆炸(我认为是析构函数,但我不确定为什么......)
我今天已经玩了几个小时了,我很困惑。
关于我的系统的一些信息:
- 操作系统 - Windows XP
- 甲骨文版 - 10g
- IDE - Microsoft Visual Studio 2010 Express C++
我的项目属性如下:
- C/C++ - 常规 - 附加包含目录 = C:\oracle\product\10.2.0\client_1\oci\include;%(AdditionalIncludeDirectories)
- C/C++ - 代码生成 - 多线程调试 DLL (/MDd)
- 链接器 - 常规 - 附加库目录 = C:\oracle\product\10.2.0\client_1\oci\lib\msvc\vc8;%(AdditionalLibraryDirectories)
- 链接 - 输入 - 附加依赖项 = oraocci10.lib;oraocci10d.lib;%(AdditionalDependencies)
我希望我没有对太多信息感到困惑......任何帮助或见解都会很棒,在此先感谢!
编辑如果我重写循环,将值存储在局部变量中,则在循环结束时抛出错误: