问题标签 [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.

0 投票
1 回答
721 浏览

c++ - Oracle 使用 OCCI 和 C++ 获取最后插入的行 ID

鉴于上面的代码,我如何获取插入数据库的行的 ID。我正在使用 C++ 和 oracle OCCI 接口:

感谢您的帮助。

0 投票
0 回答
827 浏览

c++ - OCCI C++ 应用程序未定义参考

我从这里开始,但发生了很大变化,我认为最好开始一个新问题,特别是因为我认为该问题中的 CMake 问题已经解决。

背景
我正在尝试设置一个项目的基本外壳,该项目涉及将 C++ 中间层连接到 Oracle 12c 数据库。

环境
1. MinGW-64 (x86_64-4.9.1-release-win32-sjlj-rt_v3-rev2)
2. Windows 7 64-bit
3. CLion 2016.1.1 (所以我用的是CMake 3.5.1)
4. All的 OCCI DLL 在 system32 中。
5.库和dll都在C:/Users/hurst/libs

CMakeLists.txt

代码

错误


有什么建议么?谢谢。

编辑
这里建议的是详细的错误输出:

编辑基于我在另一个 SO 答案
上所做的一些阅读,我分解了 target_link_libraries() 调用,以便每次调用一个库: target_link_libraries(Oracle ${OCCI1}) target_link_libraries (Oracle ${OCCI2}) target_link_libraries (Oracle $ {OCCI3}) target_link_libraries (Oracle ${OCCI4})




然后我尝试通过将 ${OCCI2} 向上/向下移动一个来运行它,看看它是否成功(即 1234、2134、1324、1342),因为 ${OCCI2} 是 OCI 库,它代表 Oracle 接口的基本 C API . 它没有工作,同样的错误。

0 投票
1 回答
119 浏览

c++ - VS2012 返回 Oracle unique_ptr 崩溃的向量

我确实有一个代码结构,我从数据库中读取 Oracle 行,然后将其分配给一个表示其数据的通用模型(称为commonmodel::Model)。我在 Windows 7 上使用 VS2012。

我的问题是下面的这段代码,我在其中执行了一些语句,例如SELECT ...

我正在运行测试并且表是空的,所以没有数据从SELECT....from 数据库返回,因此里面的代码while (resultSet->next())没有被调用。

我的程序可以编译,但它在运行时返回数据 ( return retData) 时崩溃。我不知道是什么导致了这种行为,我想帮助解决它。

顺便说一句:我选择std::unique_ptr´s为 Oracle 创建指针,以便在不需要任何模式时让编译器释放这些指针。在那之后,我不需要在操作结束时删除它们。

0 投票
1 回答
188 浏览

oracle - OCCI 与 SOLARIS 中的 GCC

我们正在尝试将 OCCI 与 GCC 一起使用。OCCI 是使用 sun studio 编译器编译的。是否有可能将 OCCI 与 GCC 一起使用而不是 sun 本机编译器 CC?

0 投票
1 回答
491 浏览

c++ - 在 std::string 或 char 数组中间使用 NULL char 更新

我们使用 Oracle 12c 数据库和带有 OCCI 的 CentOS7 进行连接。我们试图在数据库中插入一个 char 数组,但是这个 char 数组中间有一个 NUL 字符。当我们使用 statement->setString 函数时,更新是成功的,但是一旦它看到 NUL 字符,它只会将 NUL 字符放在那里。请参阅此示例代码及其输出。

使用 setString 的示例代码:

更新后访问数据库:

但是我本来希望它是

所以我尝试使用 oracle::occi::Bytes——这个错误

ORA - 12899: 列“MAIN_USER”.“MY_CUSTOMERS”.“FIRST_NAME”的值太大(实际:40,最大值:20)

使用 setBytes 的示例代码:

输出:

因此,我尝试通过将 oracle::occi::Bytes 构造函数的第二个参数更改为 10 来发送一半字节,但它成功了,但是在从数据库中读取值后,我意识到它是十六进制值的字符串表示形式字符。所以我此时的问题是,当我通过 oracle::occi:Bytes 时,为什么 Oracle12c 将十六进制值作为字符串。

使用一半实际长度和 setBytes 的示例代码:

更新后访问数据库:SELECT first_name FROM my_customers WHERE customer_id = 10;

注意:这个查询没有用 rawtohex 包装——这是数据库中实际的 char 数组值。

这是表定义:

以下是我们的 Oracle 实例信息:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64 位生产,具有分区、真正应用程序集群、自动存储管理、OLAP、高级分析和真正应用程序测试选项

我们正在使用 Oracle occi 客户端 12.1 64bit

0 投票
1 回答
709 浏览

environment-variables - ld 找不到 OCCI 库,即使它们存在于 LD_LIBRARY_PATH

我只是在做一些简单的 OCCI 事情,但是编译起来有点奇怪

环境:

  • Oracle VM:Windows 8 64 位上的 Centos7 64 位
  • gcc-c++.x86_64
  • 只需双击 rpm 即可安装 Oracle XE(下载页面显示 linux 64bit)

echo $LD_LIBRARY_PATH 产生: /usr/local/lib64/:/u01/app/oracle/product/11.2.0/xe/lib/

我也试过export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib/ 让它产生 /u01/app/oracle/product/11.2.0/xe/lib/

一些列表命令: find /u01/app/oracle/product/11.2.0/xe/lib/ -name lib*

产生以下结果:

但是编译命令说 ld 找不到一些库: g++ -o ab -I/u01/app/oracle/product/11.2.0/xe/rdbms/public/ -lnnz11 -lclntsh -locci a.cpp

我已经尝试添加-L/u01/app/oracle/product/11.2.0/xe/lib/,它成功编译但是运行程序会导致它在简单的行中静默崩溃/阻塞

Environment *env = Environment::createEnvironment();

没有发现异常。

有人知道我做错了什么吗?还是这两个问题相关?

顺便说一句,它曾经像 5 小时前一样工作,当它突然停止工作时,我重新安装了整个 VM,现在它仍然无法工作。

0 投票
1 回答
225 浏览

c++ - oracle occi ResultSet::next() 核心转储

嗨,我遇到了一个occi问题,我想从oracle获取区间值,但它是核心转储,为什么?

0 投票
1 回答
527 浏览

c++ - ORA-00947: not enough values when creating object in Oracle

I created a new TYPE in Oracle in order to have parity between my table and a local c++ object (I am using OCCI interface for C++).

In the code I use

The code compiles, connects to db but throws the following exception

Exception thrown for insertRow Error number: 947 ORA-00947: not enough values

Do I have a problematic "sqlStmt"? Is something wrong with the syntax or the binding?

Of course I have already setup an environment and connection

0 投票
1 回答
151 浏览

node.js - 为 node-mapnik 构建 occi 插件

我正在尝试为 node-mapnik 构建 occi 插件。我的目的是在 tilelive-bridge 节点模块的 node-mapnik 安装中使用该插件。

这是我首先做的:

这样做之后,我可以使用以下方法构建 postgis 插件:

生成的 postgis.input 文件在 plugins/input 目录中可用。

我克隆了 mapnik/non-core-plugins 存储库,将 occi 插件复制到 plugins/input 目录中,zip-installed oracle instantclient 11.2.0.4.0 版本(rpm 安装没有给我包含文件夹和/或 .h 文件),编辑 SConstruct 文件并将这一行添加到插件对象:

然后我编辑了 config.py 文件并添加了这些:

另外,我改变了这一行:

进入

然后我将这 3 行添加到 ~/.bashrc:

请注意,我使用的不是 10.2.0.3 版本,而是 11.2.0.4.0,我只是将文件夹命名为适合 SConstruct 中的默认文件夹(我也可以更改默认文件夹,但我不确定是默认文件夹,所以我保持原样)。

然后我输入:

并转到 mapnik 文件夹以运行构建:

它说:

但它没有说:

就像 github 中 mapnik 的 wiki 的 occi 页面所暗示的那样。

我得到的错误:

Tilelive-bridge 没有附带带有 occi 插件的 mapnik 安装,并且在它们删除 occi 支持之前的版本将无法编译。

你能告诉我我错过了什么吗?

感谢您提前提供的所有帮助

0 投票
1 回答
449 浏览

c++ - OCCI 应用程序中的无效指针错误

我正在使用本教程中的代码来试验 OCCI:

http://oradim.blogspot.com.br/2009/08/getting-started-with-occi-linux-version_16.html

当我尝试运行应用程序时,它给了我以下错误:

我正在使用 netbeans 编译的 ubuntu 机器上运行。编译是这样的:

调试后可以看到这里崩溃了(用户、密码和ip省略了,但是我用同一​​个用户和密码连接sqlplus),但是不知道为什么会崩溃: