【发布时间】:2019-06-18 17:27:46
【问题描述】:
我正在使用 ADODB 连接来连接到我的其他同事都不了解如何连接的数据库。到目前为止,我已经能够通过 2 种方法查看所有可用的表:
Dim ado as object
set ado = CreateObject("ADODB.Connection")
Call ado.open("...")
set rs = ado.Execute("SELECT * FROM sys.objects WHERE type='U'")
还有
const adTable = 20
Set rstSchema = ado.OpenSchema(adTable)
Do Until rstSchema.EOF
Debug.Print rstSchema("TABLE_NAME")
rstSchema.MoveNext
Loop
但让我感到困惑的部分是直接从表格中选择......我希望能够做到:
select * from <<TABLENAME>>
其中<<TABLENAME>> 是上述两种方法返回的表名之一。但是,每当我这样做时,标题中都会出现错误:
Invalid object name '<<TABLENAME>>'.
那么,我究竟是如何访问从 OpenSchema() 方法标识的表中的数据的。还有其他我不熟悉的方法吗?
【问题讨论】:
-
发布我尝试过的问题后的几秒钟(看起来是什么)
<<Catalog>>.<<Schema>>.<<TableName>>。谁能确认这是正确的名称吗? -
你用的是什么数据库引擎?
-
@DaveInCaz 我相信是 SQL Server
-
当执行 SELECT * FROM TableName 时,TableName 必须是明确的表名......它不能是变量。您可以从结果中构建一个 SQL 字符串,以便最终将 SQL 作为字符串传递,其中明确说明完整的 SQL 语句,传递给 EXECUTE 语句以执行,然后读回结果。但是你不能参数化表名。
-
已确认。在 SQL Server 术语中:
<<Database>>.<<Owner>>.<<TableName>>。如果首先执行USE <<Database>>,则可以只使用>。然后突然所有者不再重要。
标签: sql-server vb6 adodb