PDA

نسخه کامل مشاهده نسخه کامل : edit در بانک اطلاعاتی SQL Server با استفاده از پارامترها



leila3000
04-06-2007, 23:51
سلام دوستان , اگه ممکنه به من بگید که مشکل این کد چیه ؟
وقتی این کد اجر می شه معمولا error Duplicate Key می دهد .

SqlUpdateCommand1.CommandText = "UPDATE lit SET [file] = @nfile,delet=@delet ,date = @date ,link=@lnk where rank=@rank "
SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@nfile", System.Data.SqlDbType.Text, 16, "file"))


SqlDataAdapter1.UpdateCommand.Parameters("@nfile").Value = nfile
SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@delet", System.Data.SqlDbType.Bit, 1, "delet"))
SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@rank", System.Data.SqlDbType.Decimal, 9, "rank"))
SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@date", System.Data.SqlDbType.Int, 4, "date"))
SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@lnk", System.Data.SqlDbType.Text, 16, "link"))
SqlDataAdapter1.UpdateCommand.Parameters("@delet").Value = False
SqlDataAdapter1.UpdateCommand.Parameters("@date").Value = day1
SqlDataAdapter1.UpdateCommand.Parameters("@lnk").Value = lnk
SqlDataAdapter1.UpdateCommand.Parameters("@rank").Value = Val(txtsatr.Text)
SqlUpdateCommand1.Connection = sqlConnection1
SqlUpdateCommand1.Connection.Open()
SqlUpdateCommand1.ExecuteNonQuery()
SqlUpdateCommand1.Connection.Close()

hoseinquest
05-06-2007, 00:33
خب چه پيغام خطايي ميده

mdsh1400
16-06-2007, 20:33
از طریق خود sql می توانید دستور را اجرا کنید و پیغام خطا نمی دهد؟ احتمالا ممکن است در فیلد کلید دیتابیس مشکل داشته باشید

hamidreza_buddy
22-06-2007, 21:49
احتمالاً فیلد rank یک فیلد primary و unique هست.
در این نوع فیلد ها را نباید دو دادۀ شبیه هم وارد شوند.
پس باید اول چک کنید که آیا در این فیلد همچین مقداری وجود دارد ودر صورت وجود داشتن به کاربر خطا اعلام کنید.

_H2_
23-06-2007, 13:20
سلام
حتماً پیغام خطا را هم اینجا قرار دهید و بعد هم از نامهای تابلویی که امکان دارد رزو شده باشد کمتر استفاده کنید. و در صورت استفاده انها را در داخل براکت قرار دهید مثل date یا delet (که جای شکرش باقیست که e آخر را نداره!)