使用VBScript将由变量组成的字符串插入到MSSQL数据库中

时间:2014-08-05 16:30:58

标签: sql-server vbscript insert

我有一个名为LaptopTrolleyWU的数据库,它具有以下结构:
ComputerName varchar(50)
TimeStamp datetime
记录 varchar(MAX)

我正在尝试从VBScript脚本向Log字段插入文本,但无法解决语法问题。

这是我到目前为止所做的:

 For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
        objFile.WriteLine(I + 1 & "> " & updatesToInstall.Item(i).Title & ": " & installationResult.GetUpdateResult(i).ResultCode)    
Connection.Execute "INSERT INTO LaptopTrolleyWU (Log) VALUES ('" & I + 1 & "'>  '" & updatesToInstall.Item(i).Title & "':  '" & installationResult.GetUpdateResult(i).ResultCode & "')"
Next
End If

我收到一条错误,内容为

  

'用于ODBC驱动程序的Microsoft OLE DB提供程序:[Microsoft] [ODBC SQL   服务器驱动程序] [SQL Server] ['附近的语法错误)'。

我做错了什么?

如果有帮助,这就是我最初连接到数据库的方式,我可能做错了......

Set Connection = CreateObject("ADODB.Connection")
Set Recordset = CreateObject("ADODB.Recordset")
Dim ConnectionString
ConnectionString = "Driver={SQL Server};Server=server;Trusted_Connection=no;Database=LaptopTrolly;Uid=Laptop;Pwd=password"
Connection.Open ConnectionString

2 个答案:

答案 0 :(得分:0)

这就是我最后所做的:

strLogText = I + 1 & "> " & updatesToInstall.Item(i).Title & ": " & installationResult.GetUpdateResult(i).ResultCode
        strSQLCmd = "INSERT INTO dbo.LaptopTrolleyWU (ComputerName,TimeStamp,Log) VALUES ('" + strComputerName + "', '" + dtTimeStamp + "' , '" + strLogText + "')"
        Connection.Execute strSQLCmd

答案 1 :(得分:0)

您的任务是将字符串表达式的值写入日志文件和数据库字段(我假设.Echo仅用于调试)。然后你应该投资一个变量来保存表达式的值并使用它两次:

v = I + 1 & "> " & updatesToInstall.Item(i).Title & ": " & installationResult.GetUpdateResult(i).ResultCode

写入文件很简单,因为您只需要普通数据:

objFile.WriteLine v

(没有虚假的参数列表()!)。您需要一个INSERT语句将v放入数据库; v的值必须是单引号:

>> v = "pipapo"
>> s = Replace("INSERT INTO LaptopTrolleyWU (Log) VALUES ('@v')", "@v", v)
>> WScript.Echo s
>>
INSERT INTO LaptopTrolleyWU (Log) VALUES ('pipapo')
>>

如果你那么做

WScript.Echo s
Connection.Execute s

您可以确定您执行的语句是您目视检查的代码。

您的表达方式有所不同:

I + 1 & "> " & updatesToInstall.Item(i).Title & ": " & installationResult.GetUpdateResult(i).ResultCode
I + 1 & "'>  '" & updatesToInstall.Item(i).Title & "':  '" & installationResult.GetUpdateResult(i).ResultCode

INSERT语句中的额外单引号使SQL解析器假定您要比较字符串文字。