Was ist ein „Abfrageparameter“ in C ++?
-
08-07-2019 - |
Frage
Wir wurden mit Stringauswahlabfragen in C ++ vorzubereiten. Aber wir waren dringend empfohlen QUERY Parameter zu verwenden DB2-SQL-Anfragen stellen Verwendung von string zu vermeiden. Kann jemand teilen, was durch Abfrageparameter in C ++ genau gemeint? Auch einige praktische Beispielcode-Schnipsel teilen.
Schätzen Sie die Hilfe im Voraus.
Edit: Es ist string und nicht Strstream
.Danke, Mathew Liju
Lösung
Ich vermute, dass diese Anfragen in der Regel parametrieren bezieht, anstatt die Abfrage in einem String konstruieren, liefern sie übergeben SQL-Variablen (oder Parameter) und dann separat diese Variablen. Diese sind viel besser für den Umgang mit SQL-Injection-Attacken. Zur Veranschaulichung mit einem Beispiel:
"SELECT * FROM Customers WHERE CustomerId = " + _customerId;
ist schlecht, während dies:
"SELECT * FROM Customers where CustomerId = @CustomerId"
ist gut. Der Haken ist, dass Sie die Parameter für das Abfrage-Objekt hinzuzufügen (ich weiß nicht, wie dies in C ++ durchgeführt wird.
Verweise auf andere Fragen:
- https://stackoverflow.com/questions / 1973 / what-is-the-best-way-to-abwehren-sQL-Injektion-Angriffe
- Stored Procedures vs parametrisierte Abfragen
Wild Wild Web:
Andere Tipps
SQL-Abfrage in parametrisierte Abfrageformular ist sicher als String-Format SQL-Injection-Angriff zu vermeiden. Beispiel für parametrisierte Abfrage
StringBuilder sqlstr = new StringBuilder();
cmd.Parameters.AddWithValue("@companyid", CompanyID);
sqlstr.Append("SELECT evtconfigurationId, companyid,
configname, configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid=@companyid ");
Beispiel von Query-String-Format
StringBuilder sqlstr = new StringBuilder();
sqlstr.Append("SELECT evtconfigurationId, companyid, configname,
configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" + CompanyID);