我想在单一连接中进行多个查询
我这样做
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数据库引擎错误'80040e14'之后找到的字符 SQL语句结束。
但是当我通过新的查询窗口直接发布到SQL Server Mananger时,我得到了正常的响应。
那么如何将多个响应放入不同的变量或数组中,这样我就能得到每个响应不同的变量
response1 = "SELECT ID FROM [Users];"
response2 = "SELECT DISTINCT ID FROM [Users];"
responseNth = ...
答案 0 :(得分:1)
您无法使用单个命令执行此操作,因为它需要返回4个单独的数据集 - 返回1个命令= 1个数据集(即使为空)。但是,没有理由在查询之间关闭数据库连接;打开连接,执行查询以获取所有ID,然后执行查询以获取不同的ID,然后查询以计算名称,然后查询以列出电话号码,最后关闭连接。 然而,这些中的每一个都是完全不同的结果数据集 - 例如,ID不会与电话号码相关联。
也许尝试这样的事情......
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文件我会猜测它没有数百万的记录)。 希望这对你有用。