
在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.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)