0

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

事前に助けに感謝します。

編集: strstream ではなく stringstream です。

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

4

2 に答える 2

3

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

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

悪いですが、これは次のとおりです。

"SELECT * FROM Customers where CustomerId = @CustomerId" 

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

他の質問への参照:

野生の野生のウェブ:

于 2008-11-19T04:47:50.037 に答える
1

パラメーター化されたクエリ形式の 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);
于 2008-11-19T05:02:15.157 に答える