PDA

View Full Version : مشکل با دستور ExecuteReader



bahar2008
یک شنبه 28 بهمن 1386, 09:42 صبح
سلام به همه دوستان خوبم
من برنامه ای برای تغییر پسورد در یک فرم نوشتم ولی در حین اجرا با پیغام خطا برای دستور
cmd.ExecuteReader() مواجه می شم :ناراحت::ناراحت:

این برنامه هست البته پس از وصل شدن به دیتا بیس




Try
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = " select * from [user] where pass1='" & t1.Text & "'"
Dim dr = cmd.ExecuteReader()
If dr.HasRows = TrueThen
dr.read()
cmd.CommandText = " INSERT INTO [user](pass1,pass2)VALUES(@t2,@t3)"
cmd.CommandText = " update [user] set pass1='" & t2.Text & "',pass2='" & t3.Text & "'"
cmd.Parameters.AddWithValue("t1", Me.t1.Text)
cmd.Parameters.AddWithValue("t2", Me.t2.Text)
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
Else
MessageBox.Show("اطلاعات را اشتباه وارد کرده اید ")
EndIf
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
EndTry


لطفا اگر کسی مشکل این برنامه رو می دونه کمکم کنه :قلب::قلب:

Dariuosh
یک شنبه 28 بهمن 1386, 10:00 صبح
خواهشاً کدتو تو تگ بزار که قابل فهم باشه

visual_sadegh
یک شنبه 28 بهمن 1386, 10:01 صبح
دوست عزیر:
لطفا کدها رو توی تک کد بگذارید.
مشخص کنید از کدوم خط و متن پیام خطا رو مشخص کنید.

bahar2008
یک شنبه 28 بهمن 1386, 10:23 صبح
ممنونم از راهنماییتون دوستان نمی دونستم می شه انقدر راحت کدها رو مرتب بزارم

مشکل اینجاست که از هیچ خطی پیغام خطا نمی ده و وقتی برنامه رو اجرا می کنم ابتدا پیغام " اطلاعات با موفقیت ثبت شد " رو می دهد (البته در واقع اطلاعات را وارد بانک ثبت نمی کنه ) و سپس این پیغام رو می ده :ناراحت::ناراحت::ناراحت:


ther is already an open data reader associtated with this command which must be closed first

Dariuosh
یک شنبه 28 بهمن 1386, 10:29 صبح
فکر میکنم چون دیتاریدر رو Close نکردی و کانکشن اشغاله
Dr.close رو فراموش کردی

bahar2008
یک شنبه 28 بهمن 1386, 10:33 صبح
ممنونم از راهنماییتون دوست عزیز ولی اگر امکان داره لطفا بگید که کجای این تیکه برنامه می تونم dr.close رو بزارم و اینکه اگر قبل از cmd.ExecuteNonQuery بزارم آیا این دستور اجرا می شه یا اینکه برای این دستور هم باید یک dr دیگه هم تعریف کنم؟

من وقتی کلمه .dr رو می نویسم گزینه close رو بین لیستهای تعریف شده اش نداره

raravaice
یک شنبه 28 بهمن 1386, 11:03 صبح
bahar2008 (http://barnamenevis.org/forum/member.php?u=55806) عزیز

1.شما اول باید datareader رو ببندی بعد دستورات بعدی تو صادر کنی.

2. اطلاعات شما بعد از خط cmd.ExecuteNonQuery() با موفقیت ثبت میشن.

3. این وسط insert قرار هست چی کار کنه و چرا بعدش بلا فاصله update رو اعمال کردین؟

4.اگر میخواهید error رو به طور کامل ببینید try,catch,Finally,endtry رو بردارید تا به طور کامل بفهمید Debuger داره چی میگه.

موفق باشید

visual_sadegh
یک شنبه 28 بهمن 1386, 11:15 صبح
در کد شما دیتا ریدر تعریف شده اما شما هیچ استفاده ازش نکردید دلیل استفاده از دیتاریدر اینجا چیه؟
اگه برای چک کردن رمز وروده به نظر من کدتونو اینطوری اصلاح کنید

Try
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = " select Count(*) from [user] where pass1='" & t1.Text & "'"
If cmd.ExecuteScaler >0 Then
cmd.CommandText = " INSERT INTO [user](pass1,pass2)VALUES(@t2,@t3)"
cmd.CommandText = " update [user] set pass1='" & t2.Text & "',pass2='" & t3.Text & "'"
cmd.Parameters.AddWithValue("t1", Me.t1.Text)
cmd.Parameters.AddWithValue("t2", Me.t2.Text)
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
Else
MessageBox.Show("اطلاعات را اشتباه وارد کرده اید ")
exit sub
EndIf
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
EndTry

bahar2008
یک شنبه 28 بهمن 1386, 13:45 عصر
ممنونم از راهنمایی و کمک همه دوستان خوبم :قلب::قلب:
مشکلم حل شد :قلب::قلب:

Error_abadan
سه شنبه 30 خرداد 1391, 02:16 صبح
با عرض سلام به دوستان خوبم
منم همین مشکل رو داشتم ولی حل نشد و از این خط ایراد میگیره
OleDbDataReader dr = cmd.ExecuteReader();


اگه میتونید تو اولین فرصت کمکم کنید که فردا تحویل پروژه دارم


string fp = Server.MapPath("~/MavadGazaee.accdb");
string strCnn = "provider=microsoft.ACE.OleDb.12.0;Data SOURCE =" + fp;
OleDbConnection Cnn = new OleDbConnection(strCnn);
string strCmd = "select * from user where Username='" + TextBox1.Text + "'";
Cnn.Open();
OleDbCommand cmd = new OleDbCommand(strCmd, Cnn);
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (TextBox2.Text == dr["Password"].ToString())
{
Session["Username"] = TextBox1.Text;
Response.Redirect("Default.aspx");

}

else
{
Response.Write("نام کاربری و رمز ورود صحیح نمی باشد");
}
}