【发布时间】:2019-02-23 17:26:36
【问题描述】:
我正在使用两个 Access 数据库(前端和后端)。
我的查询代码工作,但我得到它来更新数据库。我做错了什么?
我在第 25 行收到 DoCmd.RunSQL strSql 的运行时错误 3078。
Set cnn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & CurrentProject.Path & "\DB_Cryk.accdb"
cnn.Open strConnection
MemberID = txtMemberID.Value
strSql = "UPDATE Cryk " & _
"SET Membership = '" & txtMembership.Value & "', " & _
" Memberstatus = '" & txtMemberstatus.Value & "', " & _
" Membername = '" & txtMembername.Value & "', " & _
" Memberaddress = '" & txtMemberaddress.Value & "', " & _
" Memberzip = '" & txtMemberzip.Value & "', " & _
" Membercity = '" & txtMembercity.Value & "', " & _
" Memberphone = '" & txtMemberphone.Value & "', " & _
" Membermail = '" & txtMembermail.Value & "', " & _
" Memberyear = '" & txtMemberyear.Value & "', " & _
" Dateofbirth = '" & txtDateofbirth.Value & "', " & _
" Memberno = '" & txtMemberno.Value & "', " & _
" Memberfee = '" & txtMemberfee.Value & "', " & _
" Memberpayment = '" & txtMemberpayment.Value & "'" & _
"WHERE MemberID= '" & MemberID & "'"
DoCmd.RunSQL strSql
cnn.Close
Set cnn = Nothing
【问题讨论】:
-
您假设所有字段都是文本数据类型,但实际上可能不是。此外,请考虑使用 参数 来完全避免该问题。
-
我会打印出结果
strSql字符串,看看它是否是有效的 SQL。我赞同古斯塔夫的观点,使用参数。 SQL 查询的字符串连接为您打开了 SQL 注入的大门。下面是一个在 VBA 中使用参数的例子:stackoverflow.com/a/50102644/2675670 -
谢谢,在过去的 15 年里我对 sql 的经验很少,所以你能帮忙举一个基于我的代码使用参数的例子吗?