我有一個名爲mytable2的簡單表,只有一列,名稱爲varchar2(20)。 我現在有一個存儲爲std :: string向量插入到表中的名稱列表。 我想使用executeArrayUpdate,所以我必須先setDataBuffer。 但是,正如我所看到的,人們總是使用char [] [20]來設置databuffer。如何在OCCI setDataBuffer中使用矢量<string>?
這讓我非常頭疼,因爲我在這裏有兩個問題,第一個是將矢量轉換爲數組,第二個是將字符串轉換爲char。
1,我厭倦了使用char [20]向量,並且這個不能編譯。谷歌搜索,他們說矢量不能採取char [],所以我改變了我的std :: string向量爲char *的向量。
第二,我試圖用「void * p = & names [0]」把這個向量變成arrray,就像有人說這樣我們可以像使用數組一樣使用向量。
我用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);
非常感謝您的回答。 – Michael
非常感謝您的回答。我打算用OCCI函數來查詢插入,刪除和更新表(任何表),這樣我就必須給出的是字段名和值,然後程序應該自動讀取模式,並生成sql並插入到oracle中。我曾經在OPN.Net中這樣做過,但我希望我的程序性能很好,所以我再次使用C++編寫所有程序,包括算法,數據庫,webservice等。我認爲我可能需要編寫一些函數來轉換這些向量類似char **? –
Michael
是的。您可以通過使您的轉換功能也可以打電話給OCCI,讓自己的生活更輕鬆。在開始所有這些之前,我想知道用C++重新實現一切會讓事情變得更快。您需要一些方法來分析現有.Net代碼中的瓶頸。 – wreckgar23