PDA

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



khashaya
چهارشنبه 26 بهمن 1390, 02:44 صبح
من دستور آپدیت رو برای طراحی سایتم به صورت زیر نوشتم



Protected Sub btnedit_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles btnedit.Click
Dim con As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
con = New System.Data.OleDb.OleDbConnection("provider=microsoft.jet.oledb.4.0;data
source=D:\poroje payani\1\web froshgah\logindb.mdb")
con.Open()
cmd = New System.Data.OleDb.OleDbCommand("update kala set name='" + txteditnam.Text +
"',code='" + txteditcod.Text + "',price='" + txteditprc.Text + "',image='" + txteditaks.Text + "' where code=@code", con)
cmd.Parameters.AddWithValue("@name", txteditnam.Text)
cmd.Parameters.AddWithValue("@code", txteditcod.Text)
cmd.Parameters.AddWithValue("@price", txteditprc.Text)
cmd.Parameters.AddWithValue("@image", txteditaks.Text)

cmd.ExecuteNonQuery()
con.Close()



کسی می دونه مشکل این کد چیه؟
واقعا کلافه شدم:ناراحت:
این خطا رو میده

Syntax error in UPDATE statement.

khashaya
چهارشنبه 26 بهمن 1390, 13:11 عصر
جدولم همه فیلدهاش از نوع text هست به جز کد که از نوع number هست خودم فکر می کنم ممکن هست ایراد از این دستور باشه


code='" + txteditcod.Text + "',

چون کد از نوع number هست اما نمی دونم درستش چی میشه

mazoolagh
پنج شنبه 27 بهمن 1390, 08:26 صبح
خوب شما وقتی مقادیر رو مستقیما داخل دستور update گذاشتین دیگه پارامتر معنی نمیده! باید یکی رو انتخاب کنین.
ضمنا CODE که کلید شماست نباید جزو فیلدهای update باشه!

اگر میخواین از پارامتر استفاده کنین درستش این جوری هست:
CMD = New System.Data.OleDb.OleDbCommand("update kala set name=@NAME , price=@PRICE , image=@IMAGE where code=@code", con)
cmd.Parameters.AddWithValue("@CODE", txteditcod.Text)
cmd.Parameters.AddWithValue("@NAME", txteditnam.Text)
cmd.Parameters.AddWithValue("@PRICE", txteditprc.Text)
cmd.Parameters.AddWithValue("@IMAGE", txteditaks.Text)

دست آخر اینکه یادتون باشه:
1- همیشه از TRY-CATCH استفاده کنین
TRY
....
....
CATCH EX AS EXCEPTION
MSGBOX(EX.TOSTRING)
END TRY

2- و در پایان کار هم همه آبجکتها رو DISPOSE کنین.
CON.DISPOSE()
CMD.DISPOSE()