質問

文字列ストリームを使用して、C ++で選択クエリを準備していました。ただし、stringstreamの使用を避けるために、クエリパラメータを使用してdb2 sqlクエリを送信することを強くお勧めします。誰でもC ++のクエリパラメータの正確な意味を共有できますか?また、実用的なサンプルコードスニペットを共有します。

ヘルプを事前に感謝します。

編集:文字列ストリームであり、strstreamではありません。

ありがとう、 マシュー・リジュ

役に立ちましたか?

解決

これは文字列でクエリを構築するのではなく、一般にパラメータ化されたクエリを指していると思われます。SQL変数(またはパラメータ)を提供し、それらの変数を個別に渡します。これらは、SQLインジェクション攻撃を処理するためにはるかに優れています。例で説明するには:

"SELECT * FROM Customers WHERE CustomerId = " + _customerId; 

悪いことですが、これ:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

は良いです。キャッチは、クエリオブジェクトにパラメーターを追加する必要があることです(これがC ++でどのように行われるかわかりません。

他の質問への参照:

ワイルドワイルドウェブ:

他のヒント

パラメータ化されたクエリ形式のSQLクエリは、SQLインジェクション攻撃を回避するために、文字列形式より安全です。 パラメータ化されたクエリの例

StringBuilder sqlstr = new StringBuilder();  
cmd.Parameters.AddWithValue("@companyid", CompanyID);  
sqlstr.Append("SELECT evtconfigurationId, companyid, 
  configname, configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid=@companyid ");

クエリ文字列形式の例

StringBuilder sqlstr = new StringBuilder();   
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
   configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" +  CompanyID);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top