SQL 多个查询响应变量

SQL multiple queries response to variables

我想在单个连接中进行多个查询

我喜欢这样做

FileName = "d:\database.mdb"
strCnn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & FileName
strSQL = "SELECT ID FROM [Users];SELECT DISTINCT ID FROM [Users];SELECT COUNT(Name) FROM [Users];SELECT Phone FROM [Users]; "

                Set objXDatabase = Server.CreateObject("ADODB.Connection")
                objXDatabase.Cnn = strCnn
                objXDatabase.SQL = strSQL
                arrRst = objXDatabase.GetDatabaseArray()
                Set objXDatabase = Nothing

问题是我收到错误

Microsoft JET Database Engine error '80040e14' Characters found after end of SQL statement.

但是当我 post 通过新查询 window 直接进入 SQL 服务器管理器时,我得到了正常的响应。

那么如何将多个响应放入不同的变量或数组中,以便我可以获得对不同变量的每个响应

response1 = "SELECT ID FROM [Users];"
response2 = "SELECT DISTINCT ID FROM [Users];"
responseNth = ...

您不能使用单个命令执行此操作,因为它需要 return 4 个单独的数据集 - 1 个命令 = 1 个数据集 returned(即使是空的)。但是,没有理由在查询之间关闭数据库连接;打开连接,执行查询以获取所有 ID,然后执行查询以获取不同的 ID,然后执行查询以计算名称,然后执行查询以列出 phone 数字,最后关闭连接。 然而,其中每一个都是不同的结果数据集——例如,ID 不会绑定到 phone 数字。

也许试试这样的……

FileName = "d:\database.mdb"
strCnn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & FileName
strSQL1 = "SELECT ID FROM [Users]"
strSQL2 = "SELECT DISTINCT ID FROM [Users]"
strSQL3 = "SELECT COUNT(Name) FROM [Users]"
strSQL4 = "SELECT Phone FROM [Users]; "
Set objXDatabase = Server.CreateObject("ADODB.Connection")
objXDatabase.Cnn = strCnn
objXDatabase.SQL = strSQL1
arrRst1 = objXDatabase.GetDatabaseArray()
objXDatabase.SQL = strSQL2
arrRst2 = objXDatabase.GetDatabaseArray()
objXDatabase.SQL = strSQL3
arrRst3 = objXDatabase.GetDatabaseArray()
objXDatabase.SQL = strSQL4
arrRst4 = objXDatabase.GetDatabaseArray()
Set objXDatabase = Nothing

这不是经过测试的代码块,而是我认为您需要如何继续的指示。至于性能,最大的打击是打开和关闭数据库连接。一旦连接打开,运行 四个这样的查询在你关闭之前应该不是问题(取决于有多少数据,但你使用的是 Jet 和一个 .mdb 文件我猜不是数百万条记录)。 希望这对你有用。