gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:23:35 24 4
gpt4 key购买 nike

我们有一个用 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=path\db.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 语句.

更新

更改代码后,我们看到真正的错误是 DB_E_OBJECTOPEN。

更新2

深入挖掘后,这似乎是 OLE DB 提供程序和大于 127 个字符的 nvarchar 字段中的一个已知错误。

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

所以:SQL Server Compact Edition 3.5 gives "Multiple-step operation generated errors" error for simple query

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

引用2:https://forums.embarcadero.com/thread.jspa?messageID=474517

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

关于delphi - 让 Delphi 7 与 SQL Server Compact 3.5 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com