sql-server – Delphi:“参数对象定义不正确.提供的信息不一致或不完整.“
发布时间:2020-05-25 10:16:46 所属栏目: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; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
