2016-04-05 14 views
0

DB2 veritabanımdaki tüm kayıtları, Tabloyu aramak için bir Array içeriğini kullanan bir sorgu ile saymaya çalışıyorum.Array ile DB2'de Say sorgusunu seçin

  string[] strNumbers = txtNumbers.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 

       string strSearch = ""; 
        strSearch = "SELECT COUNT(*) FROM TABLENAME WHERE NUMBER = '" + strNumbers + "' AND COMMENT = '" + strMessage + "'"; 

       DB2Command cmdSearchTable = new DB2Command(strSearch, db2Connection); 

       int nodeCount = 0; 
       nodeCount = int.Parse(cmdSearchTable.ExecuteScalar().ToString()); 

if (nodeCount == 0) { 
Not Found   
} else 
    { Found 
    } 

Bu kod bir istisna atar ({ "bir konak değişkenin değerini ÇALIŞTIR veya AÇ deyimi karşılık gelen kullanım için aralık dışında."})

Ben strNumbers kullanmak Ancak eğer. Uzunluk, bir hatayı atmaz fakat node'yi yanlış anlamış olur.

Dönmem gerekiyor mu yoksa başka bir şey mi var? Sorgu ve veritabanı bağlantısı seçebildiğim kadar iyidir, veritabanına aynı programdan ekle.

Teşekkür

DÜZENLEME - bu (Bkz kabul cevabı) çözmek ama şimdi bir başka sorun var başarmış. '1234567' Veritabanında 1 olduğunda, hangisinin iyi olacağını söyler. Girdi, veritabanında olmayan '5551234' ise, 0 da döner. Bununla birlikte, eğer sorun '1234567,5551234' ise, 1234567 veri tabanında 5551234 olmasa bile Veri'de dönecektir.

1234567 için 1 ve 5551234 için 0 için bir çıkış yolu var mı?

+0

Db2 ve MySQL farklı ürünlerdir. Dahil olmayan ürünleri etiketlemeyin ... – jarlh

+0

'strNumbers' bir dizidir, bu nedenle dize ve diziyi birleştiremezsiniz. beklenen sorgu dizesi nedir? –

+0

Kullanıcıdan beklenen girdi sayı olacaktır, 1234567 veya 1234567, 7654321 olabilir. Bunları veritabanı olarak saymak istiyorum. Hepsi strNumbers dizisinde saklanıyorlar. @HariPrasad – user6097989

cevap

0

strNumbers virgülle ayrılmış olduğundan emin olun

WHERE NUMBER IN (" + strNumbers + ") AND 

ile

WHERE NUMBER = '" + strNumbers + "' AND 

değiştirmeyi deneyin. NUMBERS alanının veri türüne bağlı olarak bu '12345', 12346 ',' 12347 'veya 12345,12346,12347 gibi bir şey.

+0

Merhaba, Ive benim dizi var strNewResult = string.Join (",", strNumbers) ve Count çalışır. Teşekkür ederim! :) – user6097989

+0

Hoş Geldiniz! Çalıştığını duyduğuma sevindim. –

+0

Merhaba, Kontrol edebilir misiniz benim düzenlenmiş cevabım – user6097989