PDA

View Full Version : سوال: اشکال در استخراج داده ها از جدول دیتا بیس



atoorpatkan
شنبه 07 آبان 1390, 22:42 عصر
سلام دو.ستان.من تو محیط ویژوال استدیو یه برنامه با C# نوشتم که میخوام تو یه فرم 4 تا textbox داشته باشم که کاربر تو یکی از textbox ها شماره id که نام یه فیلدی تو جدول من هستش رو وارد کنه و سپس تو سه تا textbox دیگم به ترتیب نام و نام خانوادگی و تحصیلان مربوط به اون شماره id نشون داده بشه.من کد رو تا اینجا نوشتم اما الان نمیدونم چطوری سه تا textbox که باید نام و نام خانوادگی و تحصیلات رو نشون بدن رو به جدولم بر اساس اون id تنظیم کنم.من کد رو تا اینجا نوشتم :

SqlConnection myconnection = new
SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=lord;Integrated Security=True");
SqlCommand mycommand = new SqlCommand();
mycommand.Connection = myconnection;
mycommand.CommandText = @"select id,name,lastname from Table1 where id =@id";
mycommand.Parameters.AddWithValue(@"id", textBox1.Text);

mehran_sh_t
شنبه 07 آبان 1390, 22:56 عصر
سلام
از sqldatareader استفاده کنید، از متد read این شیئ می تونید به فیلد های مورد نظر دسترسی داشته باشید

sobaisobai
شنبه 07 آبان 1390, 22:56 عصر
سلام
کد زیر رو به برنامت اضافه کن
SqlDataReader reader;
reader = mycommand.ExecuteReader();
if (reader.Read())
{
textBox2.Text = reader["Name"].ToString();
textBox3.Text = reader["lastname"].ToString();
textBox4.Text = reader["Education"].ToString();
}
به جای Name,lastName,Education
نام فیلدهای جدولت رو بنویس
موفق باشی

atoorpatkan
شنبه 07 آبان 1390, 23:13 عصر
ببخشید الان کد من به این شکل هستش.

SqlConnection myconnection = new
SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=lord;Integrated Security=True");
SqlCommand mycommand = new SqlCommand();
mycommand.Connection = myconnection;
mycommand.CommandText = @"select id,name,lastname from Table1 where id =@id";
mycommand.Parameters.AddWithValue(@"id", textBox1.Text);
SqlDataReader reader;
reader = mycommand.ExecuteReader();
if (reader.Read())
{
textBox2.Text = reader["Name"].ToString();
textBox3.Text = reader["lastname"].ToString();

}
myconnection.Open();
mycommand.ExecuteNonQuery();
myconnection.Close();

اما وقتی اجرا میکنم اینجوری خطا میده :

http://www.pic.iran-forum.ir/images/83pg3gmvrm8ep0ablfy4.jpg

میشه راهنمایی کنین؟

sobaisobai
شنبه 07 آبان 1390, 23:18 عصر
ببخشید کد زیر رو
reader = mycommand.ExecuteReader();
به این
reader = mycommand.ExecuteReader(CommandBehavior.CloseConne ction);
تغییر بده
وکانکشنت رو هم Open کن
myconnection.Open();

atoorpatkan
شنبه 07 آبان 1390, 23:33 عصر
مرسی دوست عزیز.خیلی لطف کردی.درست شد.فقط میشه در مورده این
reader = mycommand.ExecuteReader(CommandBehavior.CloseConne ction)
و این
if (reader.Read())

یه توضیح بدی که کارشون چیه و چیکار میکنن.مرسی

sobaisobai
شنبه 07 آبان 1390, 23:41 عصر
کار DataReader همون طور که از اسمش معلومه اینه که اطلاعات رو میخونه
اما کار این
if (reader.Read());
یه شرط گذاشتیم که اگه DataReader ما اطلاعات رو خوند (()Read) یه سری کارا رو واسه ما انجام بده
که اینجا ما گفتیم مقدار TextBox2.Text مساوی بشه با
textBox2.Text = reader["Name"].ToString();
میتونی به جای Name شماره ایندکسش رو بذاری مثل :
reader[0]
ولی باید به ترتیبی باشه که تو دستورت از دیتابیس Select کردی
کد زیر رو ببین
select id,name,lastname
اگه ایندکس رو برابر با 0 بذاری id رو بر میگردونه و اگر 1 بذاری Name و.......
امیدوارم مفید بوده باشه

atoorpatkan
شنبه 07 آبان 1390, 23:55 عصر
خیلی عالی بود.واقعا دمت گرم. اما قسمت اول سواله قبلیم چی؟

sobaisobai
یک شنبه 08 آبان 1390, 00:01 صبح
خیلی عالی بود.واقعا دمت گرم. اما قسمت اول سواله قبلیم چی؟
با این دستور اطلاعات رو میخونی و میریزی تو Reader
Reader = mycommand.ExecuteReader
این دستور بعد ازبارگذاری اطلاعات در SqlDataReader اتصال رو میبنده(کانکشن)
CommandBehavior.CloseConnection
همین
مشکل دیگه ای هم هست؟

atoorpatkan
یک شنبه 08 آبان 1390, 10:44 صبح
نه دیگه کاملا حل شد.واقعا مرسیییییییییییییی