让Delphi 7与SQL Server Compact 3.5一起使用
我们有一个用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Delphi XE2 and C++ Builder XE2 Update4 HotFix
- golang 测试文件xxx_test
- perl – Carp/Croak,Cluck/Confess和verbose选项
- ToLua学习笔记(七) Example 07 LuaThread
- Groovy认为生产代码是一个好主意,与Java的断言不
- Go实战--golang中操作PDF(rsc.io/pdf、jung-kurt
- golang实现的一个小游戏–猜数字
- Vb中数据库编程对象——ADO
- 使用gmaven插件获取org.codehaus.groovy.control
- delphi – 重建窗口时锚点被破坏的解决方法?