- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试通过将包含 char 缓冲区的结构存储到 vector 中来最小化 OCCI 数组提取的行数,代码如下:
struct Columns { char buffer[1000][300]; };
int i = 1;
Columns col;
ub4* ub = NULL;
results->setDataBuffer( i++, col.buffer, OCCI_SQLT_STR, sizeof( col.buffer[ 0 ] ), ub );
vec.push_back( col );
cout << "Before, vec size: " << vec.size( ) << "\n"; // prints 1, as expected
while ( results->next( 1000 ) ) {
for ( size_t j = 0; j < results->getNumArrayRows( ); ++j ) {
cout << vec[ 0 ].buffer[ j ] << endl;
}
现在由于某种原因,这不起作用。但是,如果我不使用 col.buffer,而是创建一个 char buffer[1000][300] 并将其放入 setDataBuffer,然后在 cout 部分执行: cout << 缓冲区[j] << endl;
效果很好。所以我不太确定我哪里搞砸了?
char 缓冲区与 col.buffer 完全相同,不是吗?
我认为这无关紧要,但在头文件中定义了 struct Columns。
最佳答案
我猜 setDataBuffer
会填充您作为参数传递的缓冲区(此处为 col.buffer),然后将其插入 vector ,因此一个新的 struct Columns
由vec
分配并复制col
内容。现在 col
和 vec[0]
是两个不同的对象。
然后调用一些方法来填充您首先传递给它的缓冲区。所以它填充 col.buffer
,而你读取 vec[0].buffer
,它们是不同的,因为它们是 2 个不同的对象。
一种解决方案是执行 vec.emplace_back();
来创建一个实例,然后将 vec[0].buffer
传递给 setDataBuffer
。但要注意 vector 中元素的地址。如果您修改 vector (添加或删除元素),它可以重新分配它的内容,并且元素地址可能会改变。
关于c++ - OCCI - setDataBuffer + vector<结构>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960314/
我正在使用 OCCI 和 C++ 从 Oracle 获取数据。该代码运行良好,但我注意到性能有所下降。发生这种情况是因为在 rset->next() 迭代中一些计算需要时间。这种延迟的影响是oracl
我是 Oracle 的新手。我正在尝试使用 OCCI 连接到远程 Oracle 数据库。到目前为止,我发现的所有示例都是用于连接到本地数据库的。有人可以给我指出正确的方向,让我知道在哪里可以找到示例连
在从查询结果集中请求数据时,是否可以使用 oracle OCCI 而不是为列提供索引,而实际传递列名并获取数据? 所以不要这样做:(伪代码) std::string query = "SELECT N
我正在编写一个多线程应用程序,其中有一个主线程将任务分配给工作线程。根据任务,工作线程使用全局 occi 环境 创建连接。当工作线程完成其任务时,它会关闭连接(我敢肯定,终止时不会抛出异常)。 我的问
我正在编写一个多线程应用程序。我的工作线程从环境对象获取连接,如下所示: //EnterCriticalSection(&cs); conn = env->createConnection(usern
我正在探索一款使用 Oracle API 的软件,据我所知,对象方法通常期望将“OCCI 上下文”或“OCCI 环境”值作为参数。 一个例子是 Account 对象的构造函数: Account( or
在下面的 C++ 代码中,我正在根据搜索值更新 emp 表的一个字段。但是这段代码不能正常工作。我得到中止的输出。 void UpdateData(string field_name,string u
如果是 Oracle::OCCI::Connection,我需要测试连接性,如何获取和设置连接超时值?我阅读了 Oracle OCCI 的文档,但找不到所需的函数。 提前致谢。 最佳答案 这个答案指的
通过 OCCI 发送一个简单的查询后(例如:select * from ALL_USERS)我需要知道该列的数据类型,目前我一直在使用 ResultSet::getColumnListMetaData
我有一个使用 OCCI Oracle API 访问数据库的 OracleConnection 类。我现在需要从数据库中获取多行记录,这是通过 API 的 ResultSet::getDataBuffe
尝试通过将包含 char 缓冲区的结构存储到 vector 中来最小化 OCCI 数组提取的行数,代码如下: struct Columns { char buffer[1000][300];
帮帮我,我想创建一个通用函数来获取任何查询字符串的结果并将所有行放入另一个变量中。迭代一行时,如何知道可用的列数? Environment *env = Environment::createEnvi
编辑: 已经发生了足够多的变化,我提出了一个新问题。 You can find it here . 我正在尝试使用 OCCI 通过 C++ 连接到 Oracle 12c。我将 CLion2016.1
我正在开发一个以 Oracle 作为数据库的 C++ 应用程序,并尝试获取数以千计的 CLOB 数据类型的记录。 一直在网上搜索如何在 OCCI 中预取 CLOB 数据类型,但总是看到“如果 LONG
我使用以下简单代码连接到数据库,但收到 ORA-24399 错误,表示指定的连接数无效。我已经用谷歌搜索了足够多但不知道。这是一个CPP 程序。 以下是代码片段: try { Envi
我正在尝试在 C++ 中使用 Oracle 和 OCCI 开发一些应用程序。我成功安装了“oracle linux”和 oracle db 12c。我假设 OCCI 包含 db 作为它的一部分,所以我
我有一个在数据库上执行的查询,该查询返回一个记录数组,我在 Oracle OCCI 文档中读到您必须使用 ResultSet::setDataBuffer()函数从数据库中获取数组的数据。 当数据库行
这是我第一次体验 OCCI,所以如果答案很明显,请原谅。 我有一个 Statement 对象,以通常的方式创建: string sqlStatement = "INSERT INTO data_tab
是否可以在 Microsoft Visual Studio 2015 社区中使用 OCCI(Oracle c++ 调用接口(interface))?如果可以,如何使用? 在 Oracle 下载部分我只
如何获得查询执行的结果 - select count (*) from myTable?代码是: ... oc::Statement* stmt = m_cConnection->create
我是一名优秀的程序员,十分优秀!