2016-03-30 9 views
1

私はC#のC#の文字列に対してselectステートメントのレコードをどのように一致させるのですか?

内の文字列に対してのFoxProデータベースからデータをチェックするステートメントを作成しようとしているが、私はそれが働くように見えることはできません、ここではパラメータ化クエリを使用しますが、私がしようとしているものを達成するのに役立ち何をする?明確にするために

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 
     } 
    } 
} 

、私はtenantpopulationから呼び出さCLCODEは、他の人がすでにパラメータを使用して述べたように、コード

+0

何を確認しますか?完全に一致?その1つの文字列または他の文字列には指定したシーケンスが含まれていますか何が効いていないのですか? – Tim

+0

あなたのpropcodeは文字列ですが、クエリの中で引用符を使用していません。 PROPCODEET = '"+ PROPCODE +"' " – xecaps12

+0

基本的には、oledbcommandのCLCODEが、CLCODETとして定義されているestring leadtenantと一致するかどうかをチェックする必要があります。これはコードの他の場所でも定義されています –

答えて

2

の別の場所で定義され、leadtenantに一致するかどうかを確認したいVFPだけでなく(移動するための方法ですが、任意のSQLデータベース)。あなたは今まで考えたことがあり、CodePlexにからトムブラザーのLinqToVFPを使用した:彼らは追加/ブレースを取り外し、引用符など

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、ドライバーが正しい文字列に変換するの世話をするパラメータを使用して、SQLインジェクション攻撃を防止するためだけではありません? Linqでは、これらのSQLダイアレクトをもっと知る必要はなく、代わりにObjectクエリ(およびIntellisense)を使用します。

関連する問題