我有一个名为 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中选择名称”时,它只显示了一些奇怪的字符。
以前有人遇到过类似的问题吗?我该怎么办?
我的代码很简单,如下所示:
count=2;
vector<char*> mystring;
for(int i=0;i<count;i++)
{
char my[20];
strcpy_s(my,"Michael");
mystring.insert(mystring.end(),my);
}
stmt->setDataBuffer(1,&mystring[0],OCCI_SQLT_STR,20,NULL);
stmt->setBatchErrorMode (true);
stmt->executeArrayUpdate(count);