PDA

View Full Version : اشکال در query



fatemeh rahimi
دوشنبه 08 بهمن 1386, 11:58 صبح
سلام.
در query زیر مقدار "code" تهی هست، چرا؟
dr.HasRows ، برابر true هست ولی وقتی داخل متغیر "id" ریخته میشه،id تهی هست!!
اشکال از کجاست؟


publicstring Insertsugg(string subject, string sharh,string day,string month,string year)
{
string id = "";
cmd.Connection = this.Connection();
cmd.CommandText = "insert into suggest" + "(subject,sharh,day,month,year)" + " Values (@subject,@sharh,@day,@month,@year);select code from suggest ";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Clear();
cmd.Parameters.Add("@subject", SqlDbType.NVarChar).Value = subject;
cmd.Parameters.Add("@sharh", SqlDbType.NVarChar).Value = sharh;
cmd.Parameters.Add("@day", SqlDbType.NChar).Value = day;
cmd.Parameters.Add("@month", SqlDbType.NChar).Value = month;
cmd.Parameters.Add("@year", SqlDbType.NChar).Value = year;
cmd.ExecuteNonQuery();
SqlDataReader dr = cmd.ExecuteReader();
dr.nextresult();
id = dr["code"].tostring();
return id;
}

reza_rad
دوشنبه 08 بهمن 1386, 12:32 عصر
1- سوال شما مربوط به این تالار نبود.
2- باید قبل از مقداردهی id اینو بنویسید:


dr.read();

odiseh
دوشنبه 08 بهمن 1386, 13:17 عصر
علاوه بر راهنمایی آقای راد عزیز
شاید بد نباشه که قبلا از عبارت INSERT INTO توی کوئریتون ، عبارت set nocount off رو هم اضافه کنید.

fatemeh rahimi
دوشنبه 08 بهمن 1386, 15:48 عصر
- سوال شما مربوط به این تالار نبود.
با عرض پوزش،من فکر کردم احتمالا به این تالار مربوطه و تشکر بابت پاسختون.
من ()dr.read رو تو کدم جا انداخته بودم ،ولی مشکل برای این نبود چون کماکان "id"تهی هست!

شاید بد نباشه که قبلا از عبارت INSERT INTO توی کوئریتون ، عبارت set nocount off رو هم اضافه کنید.
من اینکار رو هم کردم ولی باز همون مشکل وجود داره!
کجای کار ایراد داره!؟

reza_rad
دوشنبه 08 بهمن 1386, 16:02 عصر
کد شما چند مشکل داره....
1- فیلد code شما احتمالا از نوع IDentity هست و شما بعد از اینسرت کردن می خواهید مقداری که الان گرفته رو بخونید.
برای اینکار بهتره از


Select @@IDENTITY

استفاده کنید.

2- برای اجرای این کامند تون از cmd.executeScalar استفاده کنید.
3- بهتره کد insert و select پشت سرش رو توی یک sp بنویسید و اینجا با sp تون کار کنید.