PDA

View Full Version : مبتدی: درخواست قطعه کدی برای مقدار برگشتی select



samaram
شنبه 10 بهمن 1388, 20:49 عصر
سلام. من این روزها در روال پروژه ام با مشکلاتی رو برو میشم که متوجه شدم همش به این ختم میشه که نمیدونم چطور میتونم از دستور select مقدار برگشتی بگیرم. الان دقیقا خاطرم نیست اما یادمه وقتی تو asp.net با c# مینوشتم یه جا از یه متدی بنام read استفاده میکردم(به این صورت بود: while objs.read()) اما الان نمیدونم در c# باید چیکار کنم؟ مثلا در این دو مورد:
1- میخوام یه مقدار که در textbox هست رو بیام در جدولم جستجو کنم و اگه بود پیغام بدم که "پیدا شد!"
2- چطور میتونم از select مقداری رو بگیرم؟ مثلا در دستوری به این شکل چطور بعدش میتونم بگم اون name و family رو هر کدوم جداگانه تو دو تا تکست باکس نمایش بده؟


select name,family from tablename where id=@id

لطفا در سطح حرفه ای خودتون نگید. یه جوری بگید من متوجه شم!

FastCode
شنبه 10 بهمن 1388, 21:32 عصر
SqlCommand CMD = new SqlCommand("Select Code, Name from Table", ConectionString)
SqlDataReader Reader = CMD.ExecuteReader();
while(Reader.Read())
{
_C_Code = Reader.GetInt32(0);
if(Reader.IsDBNull(1))
_C_Name = null;
else
_C_Name = Reader.GetString(1);
}
Reader.Close();

sky_in_iran
شنبه 10 بهمن 1388, 23:36 عصر
سلام دوست عزيز اميدوارم كد كمكت كنه البته براي اينكار راهكارهاي ديگري هم است




DataTable dt=new DataTable();
SqlCommand CMD = new SqlCommand("Select Code, Name from Table", ConectionString)
SqlDataReader Reader = CMD.ExecuteReader();
dt.load(Reader );
forech(DatatRow row in dt.rows)
{
textbox1.text = row[0].ToString();
textbox2.text = row[1].ToString();
 
}
Reader.Close();

samaram
دوشنبه 19 بهمن 1388, 21:03 عصر
از هر دوی شما دو بزرگوار ممنونم. من با راهنمایی هاتون این کد رو نوشتم :


SqlCommand CMD = new SqlCommand("Select * from [TB_customer] where sh=@id", con );
CMD.Parameters.AddWithValue("@id",textBox10 .Text );
SqlDataReader Reader = CMD.ExecuteReader();
while(Reader.Read())
{
label1.Text = "not Repeated";
}
Reader.Close();

اما موقع اجرا روی اون خط SqlDataReader Reader = CMD.ExecuteReader(); این پیغام رو میده :
ExecuteReader requires an open and available Connection. The connection's current state is closed.
ضمنا یه سوال دیگه. من با این کد میخوام بررسی کنم ببینم مقدار موجود در textbox10 با مقدار فیلد sh داخل بانک مساویه یا نه. اگه مساوی نباشه یه سری عملیات رو انجام بده و اگه مساوی باشه به کاربر پیغام خطا بده. با چه شرطی میتونم روی جواب select این بررسی رو انجام بدم؟ کد بالا درسته؟

sky_in_iran
سه شنبه 20 بهمن 1388, 14:03 عصر
دوست عزيز شما بايد متغير con از نوع aqlconnection هست ؟ اگه هست بايد بزاري :




sqlcommand cmd=new sqlcommand("select * from tablename ",con.connectionstring)



درباره سوال دومت بايد بگم كه خوب شما خروجيت و چك كن اگه hasrows داشت يا read داشت پس برنامت خروجي داره و گرنه نداره تو يك if بزار بعد هر عملي دوست داشتي انجام بده
موفق و پيروز باشي

slashslash2009
سه شنبه 20 بهمن 1388, 14:10 عصر
خیلی راحت میتونید چک کنید که آیا در دیتاتیبلتون رکوردی هست یا نه خیلی روش خوبیه :
if(dt.rows.count==0
یعنی چیزی پیدا نشد و اگر غیر این باشه یعنی دستور select چیزی پیدا کرده

samaram
سه شنبه 20 بهمن 1388, 14:49 عصر
ممنون. اما انگار مشکلش این نبود. مشکل اونجا بود که من یه اشتباه بدیهی کرده بودم. یادم رفته بود کانکشن رو باز کنم. الان درستش کردم و جواب میده. کدم الان اینطوری شد و دیگه مشکلی نیست . ازتون واقعا ممنونم.


SqlCommand CMD = new SqlCommand("Select * from [TB_customer] where sh!=@id", con);
CMD.Parameters.AddWithValue("@id", textBox10.Text);
con.Open();
SqlDataReader Reader = CMD.ExecuteReader();
while (Reader.Read())
{
label1.Text = "not Repeated";
}
Reader.Close();
con.Close();