【发布时间】:2009-12-11 19:14:23
【问题描述】:
我正在用 Excel 编写 VBA 代码来访问 Access 数据库。
我正在使用此提供程序
"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= " & DBFile & ";"
这是我的 SQL 字符串
SQlSrc = "SELECT YEAR FROM Data ORDER BY YEAR ASC"
SQlSrc = SQlSrc & ";SELECT STN FROM STN_List WHERE include = TRUE"
当我单独打开每个记录集时,它可以工作(只是第一行或第二行)但是当我像上面那样作为单个语句进行时,我得到一个错误
"SQL 语句结束后找到的字符"
有人知道这是否是 Access 2007 的问题吗?
【问题讨论】:
-
听起来像是通过只允许执行一条语句来阻止 SQL 注入攻击。
-
Jet/ACE 从来没有处理过多个 SQL 语句并且永远不会,不是为了避免 SQL 注入(Jet/ACE 容易受到攻击的 SQL 注入类型仍然很多),而是因为没有服务器- 用于序列化 SQL 语句和交错来自多个用户的请求的端进程。
-
@David W. Fenton:“因为没有服务器端进程来序列化 SQL 语句和交错来自多个用户的请求”——为什么你认为它需要一个。您可以执行此客户端,例如使用带有批处理乐观锁定的 ADODB 记录集,进行更改然后 UpdateBatch。至少 Jet 4.0 已支持此功能。为什么你认为这个模型不应该起作用?