0

我试图将我的查询与之前的帖子相匹配,但无法解决我的问题。

我有一个表 user_master,我从其他表中导入 permission_id 和 zone_id 作为键。日期为短格式。

 cmd.CommandText = "INSERT INTO user_master(uname, password, creation_date, creation_time, permission_id, zone_id)" & "VALUES('" & txtuname.Text & "','" & txtupass.Password & "','" & date_gl & "','" & time_gl & "','" & _user_perm & "','" & _zone_id & "')"

cmd.ExecuteNonQuery()

主键是autonumber,creation_date/time在其他查询中执行成功,permission_id和zone_id是数字。其他字段是文本。我通过更改此查询(删除引号等)尝试了几种排列和组合,字段计数也相同。请让我知道我执行错误的参数是什么?

情况也是如此,

cmd.CommandText = "UPDATE user_master SET uname = " & """" & txtuname.Text & """" & _
                        " and password = " & """" & txtupass.Password & """" & _
                        " and creation_date = " & """" & date_gl & """" & _
                        " and creation_time = " & """" & time_gl & """" & _
                        " and permission_id = " & _user_perm & _
                        " and zone_id = " & _zone_id & _
                        " WHERE ID = " & _usr_id_temp
                    cmd.ExecuteNonQuery()

我希望得到正确的帮助。

谢谢你,abhimoh

4

1 回答 1

1

我想从之前的答案中您正在使用 MS-Access 和 OleDb 来更新您的数据库。
如果是这种情况,那么 PASSWORD 是保留关键字,您需要用方括号将其封装起来。然后使用参数化查询来避免文本、小数和日期的解析问题,当然还可以防止 Sql Injections

cmd.CommandText = "UPDATE user_master SET uname = ?" & _
                   " and [password] = ?" & _
                   " and creation_date = ?" & _
                   " and creation_time = ?" & _
                   " and permission_id = ?" & _
                   " and zone_id = ? & _
                   " WHERE ID = ?"
cmd.Parameters.AddWithValue("@p1",txtuname.Text)
cmd.Parameters.AddWithValue("@p2",txtupass.Password)
cmd.Parameters.AddWithValue("@p3",date_gl)
cmd.Parameters.AddWithValue("@p4",time_gl)
cmd.Parameters.AddWithValue("@p5",_user_perm)
cmd.Parameters.AddWithValue("@p6",_zone_id)
cmd.Parameters.AddWithValue("@p7",_usr_id_temp)
cmd.ExecuteNonQuery()
于 2013-05-22T10:30:47.813 回答