delphi XE 和 RAD studio有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi XE 和 RAD studio有啥区别相关的知识,希望对你有一定的参考价值。

RAD 是 Rapid Application Development 的缩写,意为 快速应用开发,RAD 是由计算机顾问和作家James  Martin于1991年最早提出的,是一种试图快速生成系统而不会牺牲质量的结构化开发方法。

RAD studio :快速应用开发工作室。

常用的RAD工具有:Visual Studio、RAD studio等。


delphi XE 和 RAD studio 的区别在于:

RAD studio 是一套为程序员提供快速软件应用开发工具的环境,通常最少会包含 Delphi 和 C++Builder 这两种开发工具,分别使用 Delphi (Object Pascal 语言)和 C++ 语言两种开发语言,不同时期和版本的 RAD studio 中可能还包含有其他的软件工具。

Delphi 是 RAD studio 中的一个组成部分。


早期的 Delphi 与 C++Builder 是同一公司 Borland 的两项产品,但并没有合在一起,而是分开销售,如 delphi 7 的安装界面:


 

大约自2009 年由新公司 Embarcadero 发布 RAD.Studio.2010 开始,将两者整合在一起:



其后的版本就一直整合在一起,以 RAD Studio 的名义发布:



 

XE 是 delphi 系列其中一个版本,XE 系列从 2010 年由 Embarcadero 公司发布,现有版本为 XE、XE2、XE3 - XE10,最新版本是 delphi XE 10.2。

参考技术A Delphi Prism是作为VS的插件,开发.net的;
delphi xe不用说了吧;
Rad studio包含Delphi XE和C++ builder XE

Delphi TADOStoredProc / D6 和 RAD Studio XE2 最近的故障

【中文标题】Delphi TADOStoredProc / D6 和 RAD Studio XE2 最近的故障【英文标题】:Recent Failures on Delphi TADOStoredProc / D6 and RAD Studio XE2 【发布时间】:2012-08-23 14:36:11 【问题描述】:

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

背景:

我有一个应用程序在 Borland Delphi v6 中编码并且仍然受支持。最近,我遇到了 TADStoredProc 类无法执行存储过程的问题。这段代码之前已经稳定了好几年,从未被修改过。

我可以在请求上配置超时,这是受尊重的,但是存储过程调用永远不会运行,即使超时时间很长。应用程序只是挂起,或因超时异常而退出。 (我知道服务器没有负担过重,并响应同一个客户端发起的其他 SQL SELECT 请求。)

我知道 D6 很旧。我确实有一个使用 Embarcadero RAD Studio XE2 的单独环境,在那里我设法构建了相同的项目,但仍然存在相同的问题。 ...只是为了确保。

去哪里?

请查看提供的代码,看看是否有更好的方法来做事。 (也许 MSSQL 界面在最近更新之后更加挑剔?)我当然欢迎推荐。 是否有替代方法可以插入应用程序,即可靠且不需要 TADStoredProc?我已经完成了挖掘,但没有找到任何好的例子。

代码示例

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 := suid;
    sp.Parameters.ParamByName('@JobID').Value := jid;
    sp.Parameters.ParamByName('@DriverID').Value := DriverID;
    //[…]

    sp.Parameters.ParamByName('@Result').Direction := pdOutput; //returned from stored proc

    sp.ExecProc;

    Result := sp.Parameters.ParamByName('@Result').Value;
    sp.Free;
    con.Free;
end; // end OpenHeader(DriverID: Integer, …, ScanStart: DateTime, …): integer

感谢您提供的任何帮助。

【问题讨论】:

你有什么错误吗?您是否尝试过 Profiler 以了解该过程是否已执行?您是否尝试过从 ssms 执行该过程? 感谢您的推荐。奇怪的是,这次 SQL Profiler 似乎对它“起作用”了。抛出的 Delphi ADO 运行时异常是“超时”。从 SSMS 运行没有问题。 感谢您的推荐。 |奇怪的是,这次 SQL Profiler 似乎对它“起作用”了。抛出的 Delphi ADO 运行时异常是很长的“超时”。从 SSMS 运行没有问题。 |奇怪的是,通过 TADOQuery 运行动态 SQL 在所有情况下都可以,除非我为存储过程调用运行“EXEC ...”。 |服务器上有什么“关闭”吗? 我想,问题一定出在程序执行计划的改变上。尝试使用与 Delphi 中相同的参数值在 SSMS 中执行该过程(您可以在 Profiler 中获取它们),您应该面临很长的执行时间,这是导致超时的原因。如果这是真的,那么您应该提高您的程序性能。 伊戈尔,感谢您的意见。我已经进行了一些挖掘,这是相当过时的开发平台的调试组件一直在扔东西。 |今天我在数据库上发现了一些锁定问题。其他一些开发团队正在测试一些需要数小时才能运行(通过广域网)的查询,并且共享锁阻止了对主表的任何更新/插入/删除操作。我仍在探讨这些问题的解决方案,包括在数据库本身上使用“read_committed_snapshot”。今晚还在测试。再次感谢。 【参考方案1】:

尝试使用 SQL Server Native Client 10.0 OLE DB Provider

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername;
Pwd=myPassword;

【讨论】:

【参考方案2】:

您可以尝试在SQLOLEDB 之后简单地删除.1,因为它只是指定要使用的版本号。

con.ConnectionString :=  'Provider=SQLOLEDB;Password=<testPwd>;Persist Security Info=True;User ID=<testUser>;Initial Catalog=<myDB>;Data Source=<myServer>';

您应该考虑切换到更新的SQLNCLI 驱动程序。

您尚未指定 windows 服务器版本、sql server 版本或客户端 windows 版本,但是:SQLOLEDB 应该也存在于较新的系统中以实现向后兼容性;SQLNCLI 应该带有 SQL Server 2005;SQLNCLI10 应与 SQL Server 2008 一起提供;SQLNCLI11 应与 SQL Server 2012 和 2014 一起提供;SQLNCLI13 应与 SQL Server 2016 一起提供;

注意 32/64bit 版本的驱动,因为要与 32 位 sql server 通信,您需要 32 位驱动,反之亦然。

确保在您的客户端上安装了正确的驱动程序。

Microsoft® SQL Server® 2016 功能包 Windows 8、8.1、10、Windows Server 2012、2012 R2、2016https://www.microsoft.com/en-us/download/details.aspx?id=52676 您将找到 sqlncli.msi 的 x86/x64 版本

Microsoft® SQL Server® 2012 Native Client Windows 7、8、8.1、10、Windows Server 2008 R2、2012、2012 R2https://www.microsoft.com/en-us/download/details.aspx?id=50402 您将找到 sqlncli.msi 的 x86/x64 版本

Microsoft® SQL Server® 2008 R2 Native Client Windows Vista、XP、7、Windows Server 2003、2008、2008 R2 x86 包:http://go.microsoft.com/fwlink/?LinkID=188400&clcid=0x409 x64 包:http://go.microsoft.com/fwlink/?LinkID=188401&clcid=0x409

还要注意OLEDB/ODBC lifecycle ,OLEDB 被宣布弃用以切换到最新的 ODBC 驱动程序,但去年 10 月它被重新声明为undeprecated。

【讨论】:

以上是关于delphi XE 和 RAD studio有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Delphi XE8,C++ Builder XE8,RAD Studio XE8 官方 ISO 文件下载,附激活工具

在 Rad Studio XE 6 中找不到 C++ Builder 项目

RAD Studio XE8 技术研讨会讲义与范例程序下载

如何在 RAD Studio XE 中更改 TMsgDlgButtons“是”和“否”按钮的文本?

尝试在 XE 中访问 RAD Studio 10.2 编译库时出现链接错误

Embarcadero RAD Studio XE6 安装没有 FireMonkey Mobile Application 解决方法