PDA

View Full Version : سوال: مشکل در آپدیت دیتابیس



basic_forum
چهارشنبه 20 مهر 1390, 16:02 عصر
سلام

برای آپدیت دیتا بیسم میخواستم از کد زیر استفاده کنم که خطا میگرفت ( با سرچـــم به نتیجه ای نرسیدم ) ! مشکلشو بهم میگید ؟ اگرم کلاً اشتباهه دستور آپدیت صحیح توی دیتابیسو برام بذارید . دوستان این کد واسم خیلی ضروریه . ممنون میشم کمکم کنید .


Dim Conn As String = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/mydb.mdb;Persist Security Info=True")
Dim Cmd As New OleDbCommand("UPDATE Login SET (Username, Password)VALUES('" & txtUsername.Text & "','" & txtPassword.Text & "' WHERE PK_ID=Session("PK_ID"))", New OleDbConnection(Conn))
Cmd.Connection.Open()
Cmd.ExecuteNonQuery()
Cmd.Connection.Close()

basic_forum
پنج شنبه 21 مهر 1390, 09:27 صبح
دوستای گلم ، حرفه ای ها ، مبتدی ها ؛ هرکس دستور آپدیت کردن رو بلده بهم بگه خواهشن . زیاد وقت ندارم !
ممنون
موفق باشید

Saman Hashemi
پنج شنبه 21 مهر 1390, 10:02 صبح
خوب خطاش چیه؟

sanay_esh
پنج شنبه 21 مهر 1390, 10:18 صبح
به نظر من اول این دستور آپدیت رو بصورت دستی در بانک اجرا کن ببین از نظر خطای آپدیتی چیزی نداره بعد بیا در داخل برنامه اجرا کن !
داخل برنامه اگر خطا داد بدان که اتصالی که داری تعریف میکنی مشکل داره یا command text که نوشتی خطا داره بدین صورت
UPDATE Login SET Username='txtUsername.Text', Password='txtPassword.Text' WHERE PK_ID=PK_ID
اینو در sql اجرا کن ببین مشکلی نداره بعدش بیا توی برنامه دنبال خطا بگرد!

basic_forum
پنج شنبه 21 مهر 1390, 16:40 عصر
دوستای خوبم روی Cmd.ExecuteNonQuery() خطا میگیره!!!

aliasghar2
پنج شنبه 21 مهر 1390, 16:50 عصر
دوست عزیز وقتی ارور میده ارور رو توی کادر نشون میده لطفا اون پیغام رو بذار

ولی در کل این ارور به خاطر اشباه بودن دستورات sql و اینجوری هم که من دیدم دستورت اشتباه بود
بهتره از دتوری که sanay گفته بود استفاده کنی

UPDATE Login SET Username='txtUsername.Text', Password='txtPassword.Text' WHERE PK_ID=PK_ID

basic_forum
پنج شنبه 21 مهر 1390, 19:27 عصر
ممنون از توجهتون دوستای خوبم
اما با این روش هم نمیشه
میتونید یه دستور کامل از نحوه آپدیت توی دیتا بیسو واسم بذارید ، ممنون میشم - بازم تشکر
دوست عزیز وقتی ارور میده ارور رو توی کادر نشون میده لطفا اون پیغام رو بذار

ولی در کل این ارور به خاطر اشباه بودن دستورات sql و اینجوری هم که من دیدم دستورت اشتباه بود
بهتره از دتوری که sanay گفته بود استفاده کنی

asif1358
پنج شنبه 21 مهر 1390, 19:43 عصر
سلام.
شما باید اتصال را قبل از کماند باز کنی؛ بعدشم کدت خیلی درهم است؛ به نظرم درستش اینجوریه:


Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/mydb.mdb;Persist Security Info=True")
con.Open()
Dim Cmd As New OleDbCommand("UPDATE Login SET Username = " & txtUsername.Text & ", Password = " & txtPassword.Text & " WHERE PK_ID = " & Session("PK_ID")), con)
Cmd.ExecuteNonQuery()
con.Close()

basic_forum
پنج شنبه 21 مهر 1390, 21:41 عصر
خیلی ممنون دوستای خوبم بخصوص asif1358 عزیز
دیگه ارور نمیده ولی دیتابیس هم آپدیت نمیشه ! :متفکر:
سلام.
شما باید اتصال را قبل از کماند باز کنی؛ بعدشم کدت خیلی درهم است؛ به نظرم درستش اینجوریه:


Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/mydb.mdb;Persist Security Info=True")
con.Open()
Dim Cmd As New OleDbCommand("UPDATE Login SET Username = " & txtUsername.Text & ", Password = " & txtPassword.Text & " WHERE PK_ID = " & Session("PK_ID")), con)
Cmd.ExecuteNonQuery()
con.Close()

basic_forum
جمعه 22 مهر 1390, 12:22 عصر
دوستان دیگه برنامه از دستور زیر خطا نمیگیره ولی تغییراتی هم که انجام میدم توی دیتابیس اعمال نمیشه ( هیچ تغییری توی دیتابیس ایجاد نمیشه ) !!! مشکل کجاست ؟ ممنون میشم کمکم کنید . :متفکر: :گیج:

Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|/mydb.mdb;Persist Security Info=True")
con.Open()
Dim Cmd As New OleDbCommand("UPDATE Login SET Username = " & txtUsername.Text & ", Password = " & txtPassword.Text & " WHERE PK_ID = " & Session("PK_ID")), con)
Cmd.ExecuteNonQuery()
con.Close()

asif1358
جمعه 22 مهر 1390, 13:45 عصر
سلام.
ابتدا این سطر را درست کنید (یک نقل قول تکی لازم دارد):


Dim Cmd As New OleDbCommand("UPDATE Login SET Username = '" & txtUsername.Text & "', Password = '" & txtPassword.Text & "' WHERE PK_ID = " & Session("PK_ID")), con)


اگه نشد شاید به خاطر Sessoin باشد. آن را درست کنید مشکلی نخواهد بود. اگر نتونستید یک شکل دیگر پارامتر را به کار ببرید:


.... WHERE PK_ID = @PK_ID", con)
com.Parameters.AddWithValue("@PK_ID", Sessoin("PK_ID")

ضمنا اگر نوع داده شما غیر از String است، باید آن را در سطر دوم این مثال تبدیل کنید

basic_forum
جمعه 22 مهر 1390, 21:41 عصر
دوستای خوبم نذارید دست خالی بمونم و این پست هم نیمه کاره بمونه

basic_forum
شنبه 23 مهر 1390, 01:26 صبح
دوستای عزیز نذارید دسته خالی بمونم و این پست هم نیمه کاره بمونه ؛ کمکم کنید

asif1358
شنبه 23 مهر 1390, 12:18 عصر
دوست عزیز من نفهمیدم مشکل شما چیست.
متد Cmd.ExecuteNonQuery() یک نوع Integer بر می گرداند که تعداد سطرهای متاثره را نشان می دهد؛ پس بهتر است کد خود را این گونه تست کنی:


If Cmd.ExecuteNonQuery() = 1 Then
Response.Write("تغییر انجام شد")
Else
Response.Write("تغییر انجام نشد")
End If

asif1358
شنبه 23 مهر 1390, 12:20 عصر
دوست عزیز من نفهمیدم مشکل شما چیست.
متد Cmd.ExecuteNonQuery() یک نوع Integer بر می گرداند که تعداد سطرهای متاثره را نشان می دهد؛ پس بهتر است کد خود را این گونه تست کنی:


If Cmd.ExecuteNonQuery() = 1 Then
Response.Write("تغییر انجام شد")
Else
Response.Write("تغییر انجام نشد")
End If