sql-server – Delphi:“参数对象定义不正确.提供的信息不一致
发布时间:2020-12-12 07:07:16 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试将记录插入到3层数据库设置中的表中,并且当中间层服务器尝试将第一个参数添加到查询时,它会生成上面的错误消息作为OLE异常. 我已经用Google搜索了这个错误,并且我一致地发现了相同的结果:它来自查询中某个字符串中的冒号,这是ADO的SQL解析器.这不
我正在尝试将记录插入到3层数据库设置中的表中,并且当中间层服务器尝试将第一个参数添加到查询时,它会生成上面的错误消息作为OLE异常.
我已经用Google搜索了这个错误,并且我一致地发现了相同的结果:它来自查询中某个字符串中的冒号,这是ADO的SQL解析器.这不是这种情况.任何地方都没有假冒冒号.我已经检查并重新检查对象定义与我试图插入的表的模式.一切都结束了,这让我的同事难过.有谁知道还有什么可能导致这个?我在这里结束了我的智慧. 我正在使用Delphi 2007和SQL Server 2005. 解决方法我可以使用Delphi 2007和MSSQL Server 2008得到这个错误,我找到了一个解决方法. (这是相当糟糕的恕我直言,但也许它对你有用,如果你的是由同样的事情造成的.)产生错误的代码: with TADOQuery.Create(nil) do try Connection := ADOConnection; SQL.Text := ' (SELECT * FROM Stock WHERE InvCode = :InvCode ) ' +' (SELECT * FROM Stock WHERE InvCode = :InvCode ) '; Prepared := true; Parameters.ParamByName('InvCode').Value := 1; Open; // <<<<< I get the "parameter object is...etc. error here. finally Free; end; 我找到了两种解决方法: 1)从SQL中删除括号,即: SQL.Text := ' SELECT * FROM Stock WHERE InvCode = :InvCode ' +' SELECT * FROM Stock WHERE InvCode = :InvCode '; 2)使用两个参数而不是一个: with TADOQuery.Create(nil) do try Connection := ADOConnection; SQL.Text := ' (SELECT * FROM Stock WHERE InvCode = :InvCode1 ) ' +' (SELECT * FROM Stock WHERE InvCode = :InvCode2 ) '; Prepared := true; Parameters.ParamByName('InvCode1').Value := 1; Parameters.ParamByName('InvCode2').Value := 1; Open; // <<<<< no error now. finally Free; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |