加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

让Delphi 7与SQL Server Compact 3.5一起使用

发布时间:2020-12-15 09:20:25 所属栏目:大数据 来源:网络整理
导读:我们有一个用Delphi 7编写的旧应用程序.它目前连接到一个正在退役的旧Oracle Lite数据库.相反,已选择将数据移动到Microsoft SQL Server Compact数据库的权限.在花费大量时间将所有内容移到SQL CE数据库之后,我现在的任务是让Delphi应用程序与新数据库一起使
我们有一个用Delphi 7编写的旧应用程序.它目前连接到一个正在退役的旧Oracle Lite数据库.相反,已选择将数据移动到Microsoft SQL Server Compact数据库的权限.在花费大量时间将所有内容移到SQL CE数据库之后,我现在的任务是让Delphi应用程序与新数据库一起使用.

应该比我聪明的人(我的老板)告诉我,我应该能够简单地修改连接,一切都应该恢复原状.但是,为了在Delphi应用程序中获取ADO连接以使用我们的新SQL CE数据库,我已经在我的监视器上敲了两天.

我正在使用的一个略微简化的例子:

连接是在一个名为“adoConn”的TADOConnection的全局对象中建立的:

procedure TGlobal.DataModuleCreate(Sender: TObject);
begin
    adoConn.ConnectionString := 'Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=pathdb.sdf;';
    adoConn.Connected := True;
end;

在此之后不久,调用一个过程来填充一些消息.为了解决应用程序问题,我简化了代码以进行简单查询并在消息框中显示结果.该过程接收SQL字符串的参数,但我现在忽略它并手动插入一个简单的select语句:

procedure Select(const SQL: string);
var
    adoQuery : TADOQuery;
begin
    adoQuery := TADOQuery.Create(nil);
    try
        adoQuery.Connection := Global.adoConn;
        adoQuery.SQL.Text := 'select * from CLT_MESSAGES';
        adoQuery.ExecSQL;
        While not adoQuery.Eof do
        begin
            // Here I just created a MessageDlg to output a couple of fields.
            adoQuery.Next;
        end;
    finally
        adoQuery.Free;
    end;
end;

一切都编译得很好,但是当我运行应用程序时,我收到以下错误:

“多步操作产生错误.检查每个状态值.”

我做了一些额外的故障排除,发现错误发生在adoQuery.ExecSQL.我已经尝试了几种不同版本的连接字符串以及几种不同的尝试查询数据的方法,但最终都是一样的.我要么无法连接到数据库,要么我得到了那个愚蠢的“多重步骤”错误.

我提前感谢任何可以提供的帮助.

解决方法

不要将ExecSQL用于返回记录集的查询.

将AdoQuery.Active属性设置为True或使用AdoQuery.Open执行SELECT语句.

UPDATE

更改代码后,我们会看到真正的错误,即DB_E_OBJECTOPEN.

UPDATE2

在深入挖掘之后,似乎这是OLE DB提供程序中的已知错误,并且nvarchar字段大于127个字符.

这些引用似乎证实了这一点:

SO:SQL Server Compact Edition 3.5 gives “Multiple-step operation generated errors” error for simple query

ref1:http://www.tech-archive.net/Archive/SQL-Server/microsoft.public.sqlserver.ce/2008-07/msg00019.html

ref2:https://forums.embarcadero.com/thread.jspa?messageID=474517

ref3:http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/48815888-d4ee-42dd-b712-2168639e973c

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读