有任何方法可以直接连接我的Delphi应用程序(FireDac)到Oracle数据库吗?
目前我可以建立连接,但是我需要安装Oracle客户端
在embarcadero站点((FireDAC)只显示如何连接到已安装的客户端)。
我生成了一个使用主机、端口和实例名称连接的演示。
在安装的客户端工作完美的机器上。在没有客户端的计算机中,即使所有dll都没有连接,也不会连接,从而出现以下错误:
FireDAC Ora-1309.这台机器(NOE1 / INIT)上没有正确安装OCI。
即使dll oci.dll与应用程序位于同一个目录中,
以下代码用于连接:
procedure TForm1.btnConectarClick(Sender: TObject);
begin
conDados.Close;
conDados.Params.DriverID := 'Ora';
conDados.Params.Database := '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xxx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SMARTSRV)))';
conDados.Params.UserName := 'xxxxx';
conDados.Params.Password := 'xxxxx';
conDados.Open();
end;
另一个也不起作用的设置
conDados.Close;
// conDados.Params.DriverID := 'Ora';
// conDados.Params.Database := '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xxx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = xxx)))';
// conDados.Params.UserName := 'xxx';
// conDados.Params.Password := 'xxx';
conDados.Params.DriverID := 'Ora';
conDados.Params.Database := '192.168.0.xxx:1521/xxx';
conDados.Params.Values['OSAuthent'] := 'No';
conDados.Params.UserName := 'xxx';
conDados.Params.Password := 'xxx';
conDados.Params.Values['CharacterSet'] := 'UTF8';
odlDados.DriverID := 'Ora';
odlDados.NLSLang := 'AMERICAN_AMERICA.WE8ISO8859P1';
odlDados.VendorHome := ExtractFileDir(Application.ExeName);
odlDados.VendorLib := ExtractFilePath(Application.ExeName) + 'oci.dll';
conDados.Open();
有任何方法可以直接连接我的Delphi应用程序(FireDac)到Oracle数据库吗?
谢谢
发布于 2019-07-03 12:53:24
发布于 2019-06-04 00:26:44
完整的Oracle客户端确实占用了大量内存( MB),并希望在应用程序之前安装。
您可以使用Oracle即时客户端替代方案。它是一个压缩版本,只允许访问OCI库/dll(对于基本轻型版本),它不需要安装:只需使用exe复制dll即可。它得到了Oracle的支持,具有很高的性能和稳定性。我们不完全信任用pascal编写的“直接TCP连接”客户端,这些客户端节省了几MB,但没有得到Oracle的认证--如果为使用Oracle支付了大量的费用,您可以负担得起拥有100% Oracle连接链的几MB磁盘存储。
这是我们在开源SynDBOracle库中使用的,但是FireDAC也正式支持它。
如果您想进一步减少客户端占用空间,请考虑从RAD切换到REST体系结构,并将Oracle连接保留在应用程序服务端。简单的HTTPS + JSON将不需要客户端的任何库,很容易扩展到数千个同时连接(有适当的框架),甚至允许JavaScript客户机。值得研究的方向。
发布于 2019-06-03 16:17:36
为此,您将使用不需要使用Oracle客户端的适当数据库驱动程序。
幸运的是,dbExpress为直接通过TCP/IP访问Oracle数据库提供了合适的驱动程序,而没有Oracle客户端。
https://www.devart.com/dbx/oracle/
但是dbExpress并不是免费的,因此会增加开发应用程序的成本。
https://stackoverflow.com/questions/56433698
复制相似问题