2016-03-30 16 views
1

Bir foxpro veritabanından bir dize karşılık gelen verileri denetlemek için bir deyim oluşturmaya çalışıyorum C#Seçme ifadesindeki bir kaydı C# içindeki bir dizeyle nasıl eşleştirirsiniz?

Ancak çalışmayı başaramıyorum, parametreli sorgular kullanmak istiyorum. yapmak?

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

i kodunda başka yerde tanımlanmış, leadtenant maçları, tenantpopulation çağrılan CLCODE, olmadığını kontrol etmek istiyorum, netleştirin için

+0

Ne için kontrol edin? Tam eşleşme? Bu bir dizge ya da diğeri belirtilen bir diziyi içeriyor mu? Ne çalışmıyor? – Tim

+0

Pervaneniz bir dizgidir, ancak sorgunun etrafında tırnaklarınız yok. WHERE PROPCODEET = '"+ PROPCODE +"' " – xecaps12

+0

olmalıdır. Temel olarak, CLCODE 'un oledbcommand'dan, CLCODET olarak tanımlanmış olan ve aynı zamanda kodun başka bir yerinde tanımlanmış olan, östrojen yönlendirici ile eşleşip eşleşmediğini kontrol etmem gerekiyor. –

cevap

2

Diğerleri zaten sadece VFP (gitmek için yol parametrelerini kullanılarak belirtildiği gibi ancak herhangi bir SQL veritabanı). Bunlar sadece parantez SQL enjeksiyon saldırıları önlemek doğru dizeye dönüştürme özen parametreleri sürücüleri kullanarak ekleme/kaldırma, tırnak vb

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: Hiç CodePlex Tom Brother'ın LinqToVFP kullanarak düşündünüz mü ? Linq ile, bu SQL lehçelerini çok fazla bilmeniz gerekmez ve bunun yerine Nesne sorgusunu (ve intellisense) kullanırsınız.

İlgili konular