PDA

View Full Version : سوال: ایراد این کد کجاست لطفا (فوری)



mohammad_2039
جمعه 01 آبان 1388, 14:10 عصر
string[] w = new string[2];
int i = 0;
string s = "select user from tbl_user where idr='" + textBox1.Text + "'";
SqlCommand cmd = newSqlCommand(s, sqlConnection1);
sqlConnection1.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
{
w[i] = (string)(r["user"]);
i++;
MessageBox.Show(w.ToString());
}
r.Close();
sqlConnection1.Close();

اما مسیج باکس به جای نشون دادن یوزرها میزنه system.string[] . ایراد این کد چیه ؟؟

sara.f
جمعه 01 آبان 1388, 14:32 عصر
string[] w = new string[2];
int i = 0;
string s = "select user from tbl_user where idr='" + textBox1.Text + "'";
SqlCommand cmd = newSqlCommand(s, sqlConnection1);
sqlConnection1.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
{
w[i] = (string)(r["user"]);
i++;
MessageBox.Show(w.ToString());
}
r.Close();
sqlConnection1.Close();

اما مسیج باکس به جای نشون دادن یوزرها میزنه system.string[] . ایراد این کد چیه ؟؟
سلام
فکر می کنم چون شما w[] را به صورت آرایه تعریف کردید و در این خط

MessageBox.Show(w.ToString());
تنها نام آرایه را نوشتید، و برای message box مشخص نکردید که محتویات کدوم خانه از آرایه را چاپ کنه.
فکر می کنم اگر خط بالا را به این صورت اصلاح کنید، مشکل حل میشه.

MessageBox.Show(w[i].ToString());

mohammad_2039
جمعه 01 آبان 1388, 18:20 عصر
آقا حل نشد !!! پیشنهاد دیگه ای ندارید ؟؟ ممنون میشم

sara.f
جمعه 01 آبان 1388, 18:51 عصر
آقا حل نشد !!! پیشنهاد دیگه ای ندارید ؟؟ ممنون میشم
اول خط زیر را بنویسید و بعد ++i را بنویسید.

MessageBox.Show(w[i].ToString());
ببینید حل میشه؟
اگر نه، چه error میده؟

mohammad_2039
جمعه 01 آبان 1388, 21:25 عصر
درست شد، مرسی :تشویق: اما من دلیلش رو نفهمیدم:متفکر: اگه وقت داشتی برام توضیح بده. خیلی از کمک شما ممنونم

sara.f
شنبه 02 آبان 1388, 00:41 صبح
درست شد، مرسی :تشویق: اما من دلیلش رو نفهمیدم:متفکر: اگه وقت داشتی برام توضیح بده. خیلی از کمک شما ممنونم
دلیل اینکه چرا از
MessageBox.Show(w[i].ToString()); استفاده کنید را که گفتم.
دلیل اینکه چرا ++i را بعد از خط بالا بنویسید:
اگر اول ++i را بنویسید، message box به ازای i=0 متنی را چاپ نخواهد کرد، چرا که قبل آن، i یک واحد اضافه می شود، یعنی i=1 می شود و

MessageBox.Show(w[1].ToString());
برای اولین بار اجرا می شود، یعنی خانه اول آرایه w در نظر گرفته نمی شود.
به همین ترتیب تا زمانیکه شرطتتون برقرار باشه، به اندازه یک واحد عقب هستید، یعنی در اصل message box متن موجود در خانه دوم آرایه w[] به بعد را چاپ می کند. امیدوارم متوجه شده باشید.