Yazar |
|
brkygt
Kayıt: 29.06.2010 |
|
GetPhoneCount isimli bir stored procedure var elimde. İki parametresi var, @id input ve @phone_count output şeklinde. id'si girilen kişinin kaç telefon kaydı olduğunu listeliyor. Yalnız aşağıdaki kodda datareader ile okumaya kalktığımda başlıktaki hatayı veriyor. Halbuki sql tarafında bu stored procedure çalışıyor. Sorunu bulamadım.
SqlConnection cnn = new SqlConnection(cnnStr);
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetPhoneCount";
cmd.Connection = cnn;
SqlParameter prm = new SqlParameter("@id", SqlDbType.Int, 2);
prm.Value = 2; //id'si 2 olan kişinin kaç telefon kaydı var
cmd.Parameters.Add(prm);
prm = new SqlParameter("@phone_count", SqlDbType.Int, 2);
prm.Value = 0;
cmd.Parameters.Add(prm);
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
MessageBox.Show(dr.GetInt32(0).ToString());
|
|
Yazar |
|
sis***
Kayıt: 15.01.2006 |
|
if(dr.Read()) // okuma yapmaz
yerine
while(dr.Read()) // sorgu sonucu satir sayisi kadar okuma yapar
veya
dr.Read() // bir kere okuma yapar, sadece 1 satir oldugundan eminsek (mutlaka bir kayit dondurmeli yoksa exceptiona duser)
University Of Minnesota- Minnesota(ABD)
|
|
Yazar |
|
brkygt
Kayıt: 29.06.2010 |
|
Stored procedure sonucuna göre sadece id'si girilen kisinin tablodaki kayıt sayısını gösteriyor. Yani tek bir sonuç var.
|
|
Yazar |
|
sis***
Kayıt: 15.01.2006 |
|
Kafanın karışmaması için en sağlıklı yol ve kullanılan while döngüsüdür. Eğer sorgu sonucu kayıt döndürür ise her bir kaydı tek tek okur. Yani herbir döngü adımında bir kayıt satırı(row) ulaşılabilir.
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr.GetInt32(0).ToString());
}
University Of Minnesota- Minnesota(ABD)
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
|