【发布时间】:2017-12-23 08:00:32
【问题描述】:
在 Access VBA 中,我需要使用参数进行数据库插入/更新,因此我开始使用 ADODB 命令。
要插入的数据库始终是当前数据库,所以我使用 CurrentProject.Connection。
不使用 conn.Open 一切正常,如果我尝试打开它,它将返回错误 3705:对象打开时不允许操作。
我是否遗漏了会达到连接限制的重要内容?有人可以提出更好的方法吗?
Dim sql As String
sql = "INSERT INTO "
sql = sql + "[table]"
sql = sql + "(field1,field2)"
sql = sql + "VALUES (@field1,@field2)"
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = conn
.CommandType = adCmdText
.CommandText = sql
.Parameters.Append .CreateParameter("@field1", adVarChar, adParamInput, 255, x)
.Parameters.Append .CreateParameter("@field2", adVarChar, adParamInput, 255, y)
.Execute
End With
【问题讨论】:
-
您可以直接使用连接而不打开它——它已经打开了。你想做什么?您的代码是否可以在不显式打开连接的情况下工作?
-
在不使用 conn.Open 的情况下一切正常 ...但您不要在此处使用
conn.Open。这里发布的代码会出错吗? -
对不起,我不清楚。测试时一切正常。我只是不知道在生产中是否存在最大化连接的风险?还是多个用户使用同一连接出错的风险?