C# 在ms access中更新数据库时更新查询
我的更新查询C# 在ms access中更新数据库时更新查询,c#,ms-access,C#,Ms Access,我的更新查询 update tbl_Clients set Username=@Username, Password=@Password where Id=@Id 当我在MS Access的更新语句中给出错误语法错误时更新此代码时,您使用问号(“?”)来引用查询中的参数,因此: update tbl_Clients set Username=?, Password=? where Id=? 当然,在将参数添加到命令对象时必须小心,其顺序与它们在查询中出现的顺序相同。有关一些示例,请参阅。
update tbl_Clients set Username=@Username, Password=@Password where Id=@Id
当我在MS Access的更新语句中给出错误语法错误时更新此代码时,您使用问号(“?”)来引用查询中的参数,因此:
update tbl_Clients set Username=?, Password=? where Id=?
当然,在将参数添加到命令对象时必须小心,其顺序与它们在查询中出现的顺序相同。有关一些示例,请参阅。原因可能是
Passowrd
是MS访问中的一种。您应该使用方括号,如[Password]
update tbl_Clients set Username = @Username, [Password] = @Password where Id = @Id
作为最佳实践,将其更改为非保留字
顺便说一下,如果您使用的是OleDb
provider,那么它并不关心命名参数。它只关心他们的命令。由于没有显示代码,我希望您按照命令中定义的顺序提供参数。喜欢
var cmd = OleDbCommand("update tbl_Clients set Username = @Username, [Password] = @Password where Id = @Id");
cmd.Parameters.Add("@Username", OleDbType.VarChar, 255).Value = Username;
cmd.Parameters.Add("@Password", OleDbType.VarChar, 255).Value = Password;
cmd.Parameters.Add("@Id", OleDbType.Integer).Value = Id;
如果出现相同的错误,我将不再工作。我有相同的顺序。您可以随意调用参数,只要您理解,重要的只是顺序,而不是名称。不必使用
?
。MSDN页面在这方面是错误的。我的顺序与命令cmd.Parameters.Add(“@Id”,OleDbType.Integer)中的顺序相同。Value=Id;cmd.Parameters.Add(“@Username”,OleDbType.VarChar,255)。Value=Username;cmd.Parameters.Add(“@Password”,OleDbType.VarChar,255)。Value=Password@吸血鬼不,你不是。看看您的命令,您在其中定义了@Username、@Password、@Id
顺序。但您尝试使用@Id、@Username、@Password
顺序添加参数。他们的顺序一定是一样的。是的,我想我一开始一定是。一般来说,我更喜欢在字段/列名前面加一个表别名,这样可以省去记住所有那些保留字的麻烦。@Fionnuala嗯,这听起来确实是个不错的解决方案。