2016-03-30 11 views
1

Ich versuche, eine Aussage darüber zu erstellen, um Daten aus einer FoxPro-Datenbank gegen eine Zeichenfolge in C#Wie würden Sie einen Datensatz aus einer Select-Anweisung mit einer Zeichenfolge in C# übereinstimmen?

jedoch zu prüfen, kann ich es nicht zu funktionieren scheinen, würde parametrisierte Abfragen hier Hilfe bei der Verwendung zu erreichen, was ich versuche, machen?

string PROPCODE = "IMPORT_" + ID; 
string leadtenant = clcodet; 
using (OleDbCommand tenantpopulation = new OleDbCommand(@"SELECT 
    CLCODE, 
    CLCODEDESC 
    FROM CLIENT WHERE PROPCODET = " + PROPCODE, importConnection)) 
{ 
    string tenants = ""; 
    if (@"CLCODE" = leadtenant) 
    { 
     if (tenants != String.Empty) 
     { 
      //do something 
     } 
    } 
} 

Um zu klären, ich will, ob CLCODE überprüfen, von tenantpopulation genannt, leadtenant einstimmt, an anderer Stelle im

+0

Überprüfen Sie für was? Genaue Übereinstimmung? Diese eine oder die andere Zeichenfolge enthält eine bestimmte Sequenz? Was funktioniert nicht? – Tim

+0

Ihr Propcode ist eine Zeichenfolge, aber Sie haben keine Anführungszeichen in der Abfrage. Es sollte WHERE PROPODEET = '"+ PROPCODE +"' " – xecaps12

+0

Grundsätzlich muss ich überprüfen, ob CLCODE aus dem oledbcommand, um mit thestring leadtenant, die als CLCODET definiert ist, die auch an anderer Stelle im Code definiert ist –

Antwort

2

Code definierte Wie andere bereits festgestellt Parameter verwendet wird, um die Art und Weise nur zu gehen (nicht in VFP aber jede SQL-Datenbank). Sie sind nicht nur für SQL-Injection-Angriffe zu verhindern, mit Hilfe von Parametern, die Treiber kümmern uns in die richtige Zeichenfolge umzuwandeln, das Hinzufügen/Entfernen von Klammern, Anführungszeichen usw.

string PROPCODE = "IMPORT_" + ID; 
string leadtenant = clcodet; 

using (OleDbCommand tenantpopulation = new OleDbCommand(@"SELECT 
CLCODE 
FROM CLIENT WHERE PROPCODET = ?", importConnection)) 
{ 
    tenantpopulation.Parameters.AddWithValue("p", PROPCODE); 

    // rest of code seem to be meaningless 
    // and I didn't see any code where you run your query 
    // depending on your requirement, I assume PROPCODET is a primary key? 
    // if so then you to do the check you only need to return the CLCODE 
    // with ExecuteScalar: 

    importConnection.Open(); 
    var clcode = (string)tenantpopulation.ExecuteScalar(); 
    importConnection.Close();  

    string tenants = ""; 

    // in C# equality check is done with == NOT = (assingment) 
    if (clcode == leadtenant) 
    { 
     // tenants is always String.Empty here 
     if (tenants != String.Empty) 
     { 
      //do something 
     } 
    } 
} 

PS: Haben Sie jemals daran gedacht, mit Tom Brother LinqToVFP von Codeplex ? Mit Linq müssen Sie diese SQL-Dialekte nicht sehr gut kennen und verwenden stattdessen Object query (und intellisense).

Verwandte Themen