尝试使用 vbscript 显示 SQL 数据库中的数据

Posted

技术标签:

【中文标题】尝试使用 vbscript 显示 SQL 数据库中的数据【英文标题】:Trying to display data from an SQL database using vbscript 【发布时间】:2012-06-21 18:11:24 【问题描述】:

我正在尝试在 VBScript 中建立与我的 SQL 服务器的连接。

每当我连接到我的 SQL 服务器时,网页上都会显示“处理 URL 时出现问题”并联系管理员。

我知道我的连接字符串是正确的,因为它适用于所有其他页面。

这是我目前用来设置 SQL 连接的代码

Const SQL_Connection_String = "Provider=sqloledb;SERVER=SQLPROD;DATABASE=MyDataBase;UID=MyUsername;PWD=MyPassword;"
    Set SQLConnection = CreateObject("ADODB.Connection")
    SQLConnection.provider = "ADODB.Connection"
    Set SQLConnectionRecordSet = CreateObject("ADODB.Recordset")

据我所知,这应该是在 VBscript 中建立连接的有效方式。我还没有真正找到任何关于配置这些连接的好文档。

我想知道的是:我是否正确设置了连接,是否有一些策略可以用来解决这个问题?这意味着如果连接成功,我希望能够有一个返回 true 或 false 的打印语句。我还想以某种方式打印我的阅读器的内容,看看它是否已从数据库中读取,以及它是否读取了我希望它读取的内容。

感谢您的帮助。我是第一次使用 VBscript 和 ASP.net,所以我不知道任何细节。

【问题讨论】:

欢迎来到 SO。为了帮助我们帮助您,查看错误的堆栈跟踪会很有用 不幸的是,包含堆栈跟踪将包括大约 107 个错误仍然存​​在于网站的其余部分。我对使用 Visual Basic 还是很陌生,我不确定如何才能从这个单一页面中找出问题 你真的应该考虑用 ASP.NET 而不是传统的 ASP 来做新的网站。 【参考方案1】:

下面是一些用于编写 ADO 脚本的示例代码:

Set SQLConnection = CreateObject("ADODB.Connection")
SQLConnection.Open ConnectionString

Set rs = CreateObject("ADODB.RecordSet")
rs.Open "SELECT SYSTEM_USER AS Username, session_id, auth_scheme, net_transport, client_net_address FROM sys.dm_exec_connections WHERE (@@SPID = session_id)", SQLConnection 

' Loop through each record until there are no more
While NOT rs.EOF
    ' Loop through each field
    For Each field In rs.Fields
        output.Write field.Value & " "
    next

    rs.MoveNext
    output.WriteLine
Wend

【讨论】:

代码创建“SQLConnection”,但在 .Open 调用中使用“conn”。 “ConnectionString”和“输出”从何而来? 糟糕,conn 应该是 SQLConnection。我已经编辑来解决这个问题。 output 可以是任何支持 Write 方法的东西,仅用于展示如何使用 field.Value。就我而言,我使用的是 VBS 文件中的代码,所以有一个 Set output = WScript.StdOut 行。【参考方案2】:

你的

SQLConnection.provider = "ADODB.Connection"

肯定是错的。当您在连接字符串中指定提供程序时,删除该行的(小)机会会使您的脚本“工作”。

更新

(1) 如果您在连接数据库时遇到问题,请使用this excellent source 开始理论和示例,创建一个空文件(例如 constr.udl),启动它,然后使用 GUI 指定/测试您的联系。离开对话框会将连接字符串保存在文件中,您可以从其中通过体面的(启用 Unicode)编辑器来获取它。

(2) 如果您的 ASP 页面上有太多错误,请将(简化的)数据库代码提取到命令行 .vbs 脚本中;这样您就可以专注于一个敌人(并在您确定时处理第二个敌人,您的 SELECT 会返回所需的数据)。

(3) 如果您对特定的 SQL 语句/功能/表达式有疑问,请研究文档;在这种情况下,请查看您最喜欢的 SQL 书籍或关注 Google 至 LIKE (according to the horse)。 JOIN 也可能是候选人。然后使用(2)从简单的语句开始,你掌握了看似无聊的语句之后再进行更复杂的语句。 (“Table2.Date LIKE '2011'” 可能有效或无效,取决于日期列的类型和内容(日期不是保留字/关键字吗?)

(虽然 Derek 肯定会阅读他另一个问题的答案,但从这里开始的其他人可能也会从阅读 this 中受益。)

【讨论】:

我把它注释掉了,网页还是一样。 我认为这可能是一个红鲱鱼。但是可以删除该特定代码行。真正的问题是我创建的读取器从实际数据库中读取。代码看起来像这样 SQL_Command_String = "SELECT * FROM Table1 JOIN Table2 WHERE Table1.ID = '5' AND Table2.Date LIKE '2011'" Set SQL_Reader = SQLConnection.Execute(SQL_Command_String) WHILE NOT SQL_Reader.EOF 我的想法是我没有为 SQL 正确使用 LIKE 关键字 请记住,我仍然必须让整个脚本正常工作

以上是关于尝试使用 vbscript 显示 SQL 数据库中的数据的主要内容,如果未能解决你的问题,请参考以下文章

在 vbscript 中处理时区

使用VBscript与网页上的表单进行交互并触发JavaScript事件

vbscript 使用Microsoft ActiveX Data Objects 2.8库连接到SQL数据源

VBScript - 在 SQL Server 中将 SHA1 存储为数字或二进制值

使用 VBscript 从节点和子节点的 XML 中提取数据

vbscript 仅在第一次损失流程通知中显示索赔数据