Что такое «параметр запроса» в C ++? - PullRequest
0 голосов
/ 19 ноября 2008

Мы использовали stringstream для подготовки запросов на выборку в C ++. Но мы настоятельно рекомендуем использовать QUERY PARAMETERS для отправки запросов db2 sql, чтобы избежать использования stringstream. Кто-нибудь может поделиться тем, что именно подразумевается под параметром запроса в C ++? Также поделитесь некоторыми практическими примерами фрагментов кода.

Заранее признателен за помощь.

Редактировать: Это поток строк, а не поток строк.

Спасибо, Мэтью Лию

Ответы [ 2 ]

3 голосов
/ 19 ноября 2008

Я подозреваю, что это относится к параметризованным запросам в целом, вместо того, чтобы строить запрос в строке, они предоставляют переменные (или параметры) sql и затем передают эти переменные отдельно. Это намного лучше для обработки атак SQL-инъекций. Для иллюстрации на примере:

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

это плохо, а вот это:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

это хорошо. Загвоздка в том, что вы должны добавить параметры к объекту запроса (я не знаю, как это делается в C ++.

Ссылки на другие вопросы:

Wild Wild Web:

1 голос
/ 19 ноября 2008

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);
...