PDA

View Full Version : سوال: خطا در خواندن اطلاعات از دیتا بیس



h.rezaee
دوشنبه 09 مرداد 1391, 00:19 صبح
سلام بر دوستان و اساتید محترم. بنده نرم افزاری رو نوشتم و دیتا بیسش رو هم خودم پر کردم. دیتابیس اس کیو سرور 2008 سرویس پک 2 نسخه Enterprice هستش. این دیتا بیس درمورد اطلاعات مختلفی هستش. حالا مشکل اینجاست دیتابیس قبل از پر شدن کامل کاملا درست کار میکرد منتها الان که دیتا بیس رو پر کردم موقع جستجو کردن چند گزینه رو نمی تونه پیدا کنه و اررور میده ارروری هم که میده در زیر زمیمه میکنم. منتها نمی دونم چرا این اررور رو میده. دقت کنید بعضی ها رو بدون هیچ نقصی همون جوری که می خوام پیدا می کنه ولی در بعضی از موارد اررور زیر رو میده.برای تکمیل توضیحاتم بگم بنده یک عبارت رو طبق نظر کاربر از دیتا بیس جستجو می کنم و در یک لیست باکس قرار میدم. تا اینجا بدون هیچ گونه نقصی و به طور کامل اجرا میشه بعد کاربر روی مورد جستجوی مورد نظر خودش کلیک میکنه بعد صفحه ای باز میشه و اطلاعات کامل رو تو اون صفحه از دیتابیس میخونه و به کاربر نشون میده همین قسمت نمایش کامل اطلاعات برای بعضی از مورد یافت شده لیست باکس کاملا درسته ولی برای بعضی خطای زیر رو میده.ممنون میشم اگه راهنمایی کنید.

Mahmoud.Afrad
دوشنبه 09 مرداد 1391, 01:38 صبح
این خطا داره میگه جدول mainfrm خالیه(چون اندیس 0 هم پیدا نمیشه میگما).
کد را کامل بزارید یعنی از اونجایی که لیست باکسو پر میکنید و کد کلیک روش و نمایش و کوئری فرم دوم.

h.rezaee
دوشنبه 09 مرداد 1391, 08:37 صبح
این خطا داره میگه جدول mainfrm خالیه(چون اندیس 0 هم پیدا نمیشه میگما).
کد را کامل بزارید یعنی از اونجایی که لیست باکسو پر میکنید و کد کلیک روش و نمایش و کوئری فرم دوم.

دوست عزیز این هم کد ، وقتی کاربر روی مورد جستجو در صفحه searchfrmکلیک می کنه اون مقدار به وسیله یک lable اینجا گرفته می شه و.......


private void formshow_Load(object sender, EventArgs e)
{
label1.Text = searchfrm.i;
SqlConnection myconnection = new SqlConnection();
myconnection = new SqlConnection("Data Source=localhost;Initial Catalog=epnotronsoft;Integrated Security=True");
myconnection.Open();
SqlDataAdapter myAdapter = new SqlDataAdapter("", myconnection);
myAdapter.SelectCommand.CommandText = " SELECT * FROM mainfrm where (name = '" + label1.Text + "')";
DataSet das = new DataSet();


SqlCommand com = new SqlCommand();
com.Connection = myconnection;
com.CommandText = "select * from mainfrm where name=@name";
com.Parameters.AddWithValue("@name", label1.Text.Trim());
SqlDataReader re;
re = com.ExecuteReader();
if (re.Read())
{

re.Close();
myAdapter.Fill(das, "mainfrm");
DataRow dr = das.Tables["mainfrm"].Rows[0];


textBox3.Text = label1.Text + "\n" + dr[3].ToString();

pictureBox2.Load(dr["pic"].ToString());


axWindowsMediaPlayer1.URL = Convert.ToString(dr["film"]);
axWindowsMediaPlayer1.Ctlcontrols.play();


}
}

hakim22
دوشنبه 09 مرداد 1391, 09:15 صبح
یک break point در خطی که خطا دارد بگذارید و برنامه رو اجار کنید . وقتی به اینجا رسید watch بگذارید روی متغیر das و بعد ببینید که چند row دارد. اگر خالی بود یعنی اینکه fill شدن درست اتفاق نمی افتد و باید به کدهای قبلتر رجوع کنید.

h.rezaee
دوشنبه 09 مرداد 1391, 09:48 صبح
یک break point در خطی که خطا دارد بگذارید و برنامه رو اجار کنید . وقتی به اینجا رسید watch بگذارید روی متغیر das و بعد ببینید که چند row دارد. اگر خالی بود یعنی اینکه fill شدن درست اتفاق نمی افتد و باید به کدهای قبلتر رجوع کنید.
دوست عزیز میتونید بیشتر توضیح بدین.

h.rezaee
دوشنبه 09 مرداد 1391, 12:07 عصر
دوستان کوئری مربوطه رو تو خود اس کیو ال نوشتم منتها اونجا هم عباراتی که الف دارن رو پیدا میکنه منتها وقتی مثلا احمد رو وارد میکنیم پیدا نمی کنه ، منظورم اینه که همون عبارتی که تو خود برنامه پیدا نمی شه تو خود اس کیو ال هم پیدا نمی شه.

h.rezaee
دوشنبه 09 مرداد 1391, 16:24 عصر
دوستان واقعا کسی نیست به ما کمک کنه؟؟؟؟؟؟؟؟؟؟؟

omid_csh
دوشنبه 09 مرداد 1391, 16:49 عصر
سلام
چرا از دیتاست استفاده میکنید؟ از همون دیتاریدری که نوشتید استفاده کنید.

h.rezaee
دوشنبه 09 مرداد 1391, 16:57 عصر
سلام
چرا از دیتاست استفاده میکنید؟ از همون دیتاریدری که نوشتید استفاده کنید.

ممنون که جواب دادین. میتونید راهنمایی کنید که چه جوری استفاده کنم؟

omid_csh
دوشنبه 09 مرداد 1391, 17:06 عصر
میتونید راهنمایی کنید که چه جوری استفاده کنم؟
SqlDataReader re;
SqlConnection myconnection = new SqlConnection("Data Source=localhost;Initial Catalog=epnotronsoft;Integrated Security=True");

SqlCommand com = new SqlCommand();
com.Connection = myconnection;
com.CommandText = "select * from mainfrm where name=@name";
com.Parameters.AddWithValue("@name", label1.Text.Trim());

myconnection.Open();
re = com.ExecuteReader();

if (re.Read())
{
textBox3.Text = label1.Text + "\n" + re[3].ToString();

pictureBox2.Load(re["pic"].ToString());

...
}