varchar2(20)という名前の列が1つしかないmytable2という単純なテーブルがあります。これで、テーブルに挿入するstd::stringのベクトルとして保存されている名前のリストができました。executeArrayUpdateを使用したいので、最初にsetDataBufferを実行する必要があります。しかし、私が見ることができるように、人々は常にchar[][20]を使用してデータバッファを設定します。
ここでは2つの問題があるため、これは大きな頭痛の種になります。1つはベクトルから配列に変換すること、2つ目は文字列をcharに変換することです。
第一に、char [20]のベクトルを使用するのに疲れましたが、これはコンパイルされません。Googledで、vectorはchar []を取ることができないと言われているので、std::stringのベクトルをchar*のベクトルに変更しました。
2番目に、「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);