delphi和pb比较在数据库编程方面谁更有优势

delphi和pb比较在数据库编程方面谁更有优势,第1张

delphi和pb在数据库编程方面delphi更有优势,首先delphi支持的数据接口种类很多,有公用的ODBC、ADO,自有的DBExpress、FireDAC以及data snape等,pb主要支持sybase数据库,接口不够丰富。其次delph还有伴生的C++ bulider可以减少语言学习的负担,可以把所有的链接库便宜到一个文件中,而pb使用自定义的一套脚本语言,需要学习,编译后的动态库太多。最后delph、c++bulider支持移动开发以及linux,pb无能为力。

C++Builder是一个综合性的开发环境,它包含了可视化的前端开发工具、后端代码开发工具以及与各种数据库进行交互的组件和工具。

在C++Builder中,前端开发主要使用可视化的图形用户界面设计器和组件库,通过拖放组件实现界面的设计和开发。后端代码开发则使用C++编写,可以与前端组件进行交互,完成业务逻辑的实现。同时,C++Builder也提供了许多组件和类库,用于与各种数据库进行交互,如BDE、dbExpress、FireDAC等。

应用程序访问数据库的方式主要有两种:

1.使用内置的组件和类库,如BDE、dbExpress、FireDAC等,这些组件和类库提供了封装好的API,可以轻松地连接、查询和更新数据库。

2.使用第三方的数据库连接库,如ODBC、ADO等,这些库可以通过统一的接口连接多种不同类型的数据库,从而实现应用程序访问数据库的功能。

无论使用哪种方式,应用程序访问数据库都需要通过配置连接参数、编写SQL语句等 *** 作来实现。C++Builder提供了可视化的组件和工具,使得这些 *** 作变得更加简单易用,开发人员可以快速地完成应用程序和数据库的关联。

"If you have difficulties with manual definition of parameters,

populate the Params collection automatically and check how the

parameters are defined. Then compare that to your code. "

但我无法找到“自动”填充PARAMS的方式。我问的EMBA课程

FireDac新闻组和FD作者德米特里Arefiev,请解释说,

你可以做到这一点通过检查FetchOptions包括fiMeta,然后清除并设置FDStoredProc的

使用在演示我的SqlServer的定义如下:数据库的pubs都只有StoredProc:

create procedure test(@ANumber int, @AName varchar(20))

as

begin

select

@ANumber * 2 as "Number",

@AName + @AName as "Name"

end

我换了一对夫妇的OP的代码段是这样

[...]

LSP.Params.Clear

LSP.StoredProcName := ''

LSP.FetchOptions.Items := LSP.FetchOptions.Items + [fiMeta]

LSP.StoredProcName := aSPName

LSP.Prepare

Assert(LSP.ParamCount >0)

for i := 0 to aParams.Count - 1 do

begin

LSP.Params.ParamByName(aParams[i].Name).Value := aParams[i].Value

end

[...]

procedure TForm21.Button1Click(Sender: TObject)

var

LParams: TFDParams

Param : TFDParam

begin

LParams := TFDParams.Create

Param := LParams.Add

Param.Name := '@ANumber'

Param.Value := 612

Param := LParams.Add

Param.Name := '@AName'

Param.Value := '2008'

ExecuteStoredProc('test', LParams)

end

它工作得很好。

该在Q他优先次有这样的SP无法执行的问题

但他会发现

CodeGo.net,它的工作,如果他“[下降],建立在代码中PARAMS”,所以我想我会在这里有,当然其中必然一切都在代码中做一个控制台应用程

序。这并不困难,但它得到了利用右边是我的主要理由,张贴此作为一个答案,以供将来参考。 W / O型的你会得到关于类工厂是缺失的。

控制台应用程序(创建,并在XE6测试):

program ConsoleStoredProcProject3

{$APPTYPE CONSOLE}

{$R *.res}

uses

System.SysUtils, FireDac.DApt, FireDAC.Stan.Def, FireDAC.Stan.ASync,

FireDAC.Stan.Param, FireDAC.Stan.Option, FireDAC.Comp.Client,

FireDAC.Phys.MSSQL, VCL.ClipBrd

procedure TestSP

var

Connection : TFDConnection

StoredProc : TFDStoredProc

Param : TFDParam

begin

Connection := TFDConnection.Create(Nil)

Connection.DriverName := 'MSSQL'

Connection.Params.Values['Server'] := // your server name''

Connection.Params.Values['Database'] := 'pubs'

Connection.Params.Values['user_name'] := 'user'// adjust to suit

Connection.Params.Values['password'] := 'password'// ditto

Connection.LoginPrompt := False

Connection.Connected := True

StoredProc := TFDStoredProc.Create(Nil)

StoredProc.Connection := Connection

StoredProc.FetchOptions.Items := StoredProc.FetchOptions.Items + [fiMeta]

StoredProc.StoredProcName := 'test'

StoredProc.Prepare

Param := StoredProc.Params.ParamByName('@ANumber')

Param.Value := 333

Param := StoredProc.Params.ParamByName('@AName')

Param.Value := 'A'

StoredProc.Active := True

WriteLn(StoredProc.FieldByName('Number').AsInteger)

WriteLn(StoredProc.FieldByName('Name').AsString)

ReadLn

end

begin

try

TestSP

except

on E: Exception do

Clipboard.AsText := E.Message

end

end.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9714963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存