首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过VB6和ADO使用多个参数插入

通过VB6和ADO使用多个参数插入
EN

Stack Overflow用户
提问于 2019-07-11 08:22:17
回答 1查看 357关注 0票数 2

我试图通过添加一个简单的错误记录子例程来更新一些遗留的VB6代码,该子例程使用ADO将一行插入到SQL Server表中,其中包含错误的基本详细信息。子例程接收标识错误类型的整数参数值(errorCode)。解析XML文件时将发生错误。XML文件名(通过objFile.Name获得)将与日期、用户名和errorCode参数值一起记录。

下面的代码显示了我到目前为止所处的位置。我试图插入的表如下所示:

代码语言:javascript
复制
[dbo].[tblXMLerrorLog](
[errorLogID] [int] IDENTITY(1,1) NOT NULL,
[runDate] [datetime2](0) NULL,
[runBy] [nvarchar](255) NULL,
[xmlFileWithError] [nvarchar](255) NULL,
[errorCode] [int] NULL)
代码语言:javascript
复制
Sub writeErrorLog(errorCode As Integer)

  strSQL = "INSERT INTO dbo.tblXMLerrorLog (runDate, runBy, xmlFileWithError, errorCode) 
            VALUES(GetDate(), Current_User,?,?);"

  With cmd

    .CommandType = adCmdText
    .CommandText = strSQL

    Set par1 = .CreateParameter("@xmlFileWithError", adChar, adParamInput, 50, objFile.Name)
    .Parameters.Append par1

    Set par2 = .CreateParameter("@errorCode", adInteger, adParamInput, , errorCode)
    .Parameters.Append par2

    .ActiveConnection = Cnxn
    .Execute                        ' update error log

    .Parameters.Delete ("@xmlFileWithError")
    .Parameters.Delete ("@errorCode")

  End With

End Sub

当我运行代码时,.Execute语句抛出这个错误:

“多步OLE DB操作生成错误。请检查每个OLE DB状态值(如果可用)。未完成任何工作。”

我对该错误消息的研究表明字段大小不匹配,但我不理解这一点。如果有任何指示我会很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-12 05:00:53

已经修好了。正如注释中所解释的,我的主(调用)程序使用了一个参数。因此,当到达我的子例程的.Execute语句时,有3个参数,而不是我天真地期望的只有2个。正如一条评论所建议的,首选的解决方案是使用命名参数,但我不认为VB6支持这样做;我必须用问号占位符引用参数,所以它们的顺序很重要。我的子例程无法工作,因为当INSERT INTO语句试图将“错误”值插入到具有不同数据类型的列中时,意外的第一个参数(来自调用程序)导致数据类型不匹配。因此,我看到的错误消息是有意义的。修复与子例程无关。相反,我修改了调用程序,以便在调用子例程之前删除第一个参数。感谢所有帮助我做这件事的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56980158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档