سؤال

كنا نستخدم stringstream لإعداد استعلامات محددة في C++.ولكن ننصحنا بشدة باستخدام معلمات الاستعلام لإرسال استعلامات db2 sql لتجنب استخدام stringstream.هل يمكن لأي شخص مشاركة ما يعنيه بالضبط معلمة الاستعلام في C++؟يمكنك أيضًا مشاركة بعض نماذج مقتطفات التعليمات البرمجية العملية.

نقدر المساعدة مقدما.

يحرر:إنه stringstream وليس 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