小编use*_*866的帖子

最近在Delphi TADOStoredProc/D6和RAD Studio XE2上出现故障

感谢任何能提供一些帮助的人......

背景:

我有一个应用程序编码,仍然支持Borland Delphi v6.最近,我遇到了TADOStoredProc类无法执行存储过程的问题.此代码以前已稳定了好几年,从未被修改过.

我可以在请求上配置超时,这是受到尊重的,但是存储过程调用永远不会运行,即使在非常长的超时也是如此.应用程序只是挂起,或者在超时异常时保释.(我知道服务器没有负担过重,并且响应同一客户端发起的其他SQL SELECT请求.)

我知道D6已经老了.我与Embarcadero RAD Studio XE2有一个单独的环境,在那里我设法构建了同一个项目,并且仍然存在相同的问题.... 只想确认一下.

去哪儿?

  • 请查看提供的代码,看看是否有更好的方法.(在最近更新之后,可能MSSQL界面更挑剔?)我当然欢迎推荐.
  • 有没有可以插入应用程序的替代方法,这是可靠的,不需要TADOStoredProc?我已经完成了挖掘工作,但没有找到任何好的例子.

代码示例

function TImport.OpenHeader(DriverID: Integer, …, ScanStart: DateTime, ...): integer;
var
    suid: integer;
    jid: integer;

    con : TADOConnection;
    sp : TADOStoredProc;
begin
    suid := getScanUnitID();
    jid := deriveJobID(ScanStart);

    con := TADOConnection.Create(nil);
    con.LoginPrompt := false;
    con.ConnectionString :=  'Provider=SQLOLEDB.1;Password=<testPwd>;Persist Security Info=True;User ID=<testUser>;Initial Catalog=<myDB>;Data Source=<myServer>';
    con.CommandTimeout := 10;
    con.KeepConnection := true;
    con.Connected := true;

    sp := TADOStoredProc.Create(nil);
    sp.Connection := con;
    sp.CommandTimeout := 10;
    sp.ProcedureName := 'mon4_OpenHeader;1';
    sp.Parameters.Refresh;

    sp.Parameters.ParamByName('@ScanUnitID').Value := …
Run Code Online (Sandbox Code Playgroud)

sql-server delphi delphi-6 delphi-xe2

11
推荐指数
1
解决办法
1892
查看次数

标签 统计

delphi ×1

delphi-6 ×1

delphi-xe2 ×1

sql-server ×1