可変の列数のテーブルを作成しようとしています。 YH(i、Y1、Y2 .... Yd)エラー:型 'const char *'と 'const char [7]'のバイナリ 'operator +'への無効なオペランド
私はクエリ内でforループを作成しました。
error: invalid operands of types ‘const char*’ and ‘const char [7]’ to binary ‘operator+’ for(int l=1;l<=d;l++) {commandline+=", Y"+ l +" real ";}
メインコードは以下の通りです - - しかし、それは次のエラーを示しているそれらの
for(int l=1;l<=d;l++) {commandline+=", Y" l " real ";}
for(int l=1;l<=d;l++) {commandline+=", Y"+std::string(l)+" real ";}
なし動いていないようで -
string commandline;
commandline = "DROP TABLE YH";
if(SQL_SUCCESS != SQLExecDirect(hdlStmt, (SQLCHAR*)(commandline.c_str()), SQL_NTS))
{
cout<<"The drop YH table is unsuccessful."<<endl;
}
commandline = "CREATE TABLE YH"
"(i int primary key ";
for(int l=1;l<=d;l++) {
commandline+=", Y"+l+" real ";
}
commandline+=") ";
if(SQL_SUCCESS != SQLExecDirect(hdlStmt, (SQLCHAR*)(commandline.c_str()), SQL_NTS))
{
cout<<"The create table sql command hasn't been executed successfully."<<endl;
}
は、私は、次の試してみました。
SQL文で二重引用符を使用する場合は、\ "を使用して適切にエスケープします。また、SQLインジェクション攻撃に対してSQL文がチェックされていることを確認してください。 – Jodocus
@Jodocus彼はSQL文で二重引用符を使用しようとしています。 – Barmar
おっと、私はそれを逃した! 'commandline + = std :: string("、Y ")+ std :: to_string(l)+" real ";あるいは、@ user4581301によれば' std :: istringstream'を使います。 –