首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从delphi-7应用程序ADOConnectionstring进行ODBC连接。

从delphi-7应用程序ADOConnectionstring进行ODBC连接。
EN

Stack Overflow用户
提问于 2013-01-23 09:53:28
回答 2查看 5.2K关注 0票数 0

背景:

用Delphi-7或-6编写的应用程序(通过.exe文件进行搜索)。叫西格曼斯特。

我移到了新服务器,剩下的是运行在SQL server下的SigmaNest数据库。经过数小时的故障排除后,将该数据库迁移到新服务器。这个问题涵盖了这个SQL服务器应用程序的所有方面。服务默认启动,不工作向导,缺少全文的东西,可笑的许多地方右击等等。失去的人还在继续。

目前,我在新硬件上有一个具有数据库SNDBase (西格曼)的工作server,但无法从客户端连接。

不,这不可能是对的,我想,并在寻找其他的选择。4-5点击MySQL工作台,我让它在测试linux上运行.好吧..。

但现在问题来了。

SigmaNest使用ini文件作为其配置。

所以在我找到的一个ini文件里

代码语言:javascript
复制
; 1 = Paradox, 2 = MSSQLServer or MSDE
ADOConnectionString=Provider=SQLOLEDB.1;Data Source=ODIN\SIGMANEST;User ID=sigmanest;Password="";Persist Security Info=True;Initial Catalog=SNDBase;

奥凯..。在客户端上安装Mysql驱动程序并进行连接。目前为止都在工作..。

转到谷歌,找到了ADOConnectionsstring的mysql ..。

代码语言:javascript
复制
ADOConnectionString=DRIVER={MySQL ODBC 5.2a Driver};SERVER=192.168.100.19;PORT=3306;DATABASE=SNDBase;UID=sigmanest;PASSWORD=;OPTION=4;

但应用程序不会启动。只需返回到sigmanest的db连接配置工具即可。

已经将此发布到SigmaTek,但我给出的唯一响应是通过SQLOLEDB为MS提供了一个带有ADOConnection字符串的邮件。

搜索驱动器并没有找到anny dbex*.dll文件,这意味着它们不使用dbExpress组件(我猜)。

因此,是否有一些缺少的dll文件,但没有随应用程序。或者这类东西是在程序中硬编码的?

有人知道该怎么做吗?

或者我应该放弃mysql的梦想,去浪费sql服务器后端的空间。

佩尔尼尔斯

PS。SigmaNest.exe有一个时间戳2006-05-19 DS.

EN

回答 2

Stack Overflow用户

发布于 2013-01-24 09:05:56

对不起,我不知道该怎么处理这个问题。可以说,堆积如山似乎让世界上所有有才华的人都在同一个屋檐下感到沮丧。

肯怀特:是的,你是对的,我不能在这个应用程序上使用MySQL (经过几个小时的谷歌搜索和测试)。

不管怎样,我设法做到了这样的连接(也许有些东西对其他人有用,有些是与Delphi相关的)

  • 首先,必须下载mysql连接器http://dev.mysql.com/downloads/connector/odbc/
  • 在“用户DSN”选项卡下从控制面板->管理工具->数据源( ODBC )进行ODBC连接。
  • 您将使用记事本创建新的文本文件。
  • 将文件重命名为扩展名.udl
  • 双击它并填写对话框.
  • 在记事本中打开文件,就有了adoconnection字符串。

但你的问题还没有结束..。SQL与MySQL之间的差异将使应用程序停止运行。例如,MySQL中的布尔值被声明为tinyint (0=false 1=true)

这里提到了一个解决办法,http://www.i-logic.com/utilities/MySQL.htm

因此,我的奋斗没有回报,但上面的一些可能是对其他人感兴趣。

每一个尼尔斯。

票数 0
EN

Stack Overflow用户

发布于 2021-12-29 01:42:43

可以在运行时配置ODBC,下面是配置ODBC以使用BDE连接到Server的示例。

代码语言:javascript
复制
unit uBDEConnectionSqlServer;

interface

uses
    DBTables, Windows, Classes, SysUtils;

type TBDEConnectionSqlServer = class(TComponent)
  private
    { Private declarations }
    function CreateOBDCConnection(dataBase : string; server: string):Boolean;


  public
    { Public declarations }
    Function CreateBDEConnection(dataBase: TDatabase; dataBaseName : string; server:string; userName:string; password:string): Boolean;

  end;
  
  const
      ODBC_ADD_DSN = 1; // Add data source
      ODBC_CONFIG_DSN = 2; // Configure (edit) data source
      ODBC_REMOVE_DSN = 3; // Remove data source
      ODBC_ADD_SYS_DSN = 4; // add a system DSN
      ODBC_CONFIG_SYS_DSN = 5; // Configure a system DSN
      ODBC_REMOVE_SYS_DSN = 6; // remove a system DSN
      ODBC_REMOVE_DEFAULT_DSN = 7; // remove the default DSN
      
  function SQLConfigDataSource(
        hwndParent: HWND;
        fRequest: WORD;
        lpszDriver: LPCSTR;
        lpszAttributes: LPCSTR): BOOL; stdcall; external 'ODBCCP32.DLL';

implementation

Function TBDEConnectionSqlServer.CreateBDEConnection(dataBase: TDatabase; dataBaseName : string; server:string; userName:string; password:string): Boolean;
var
  retorno: TDatabase;
Begin
  result := false;

  if (CreateOBDCConnection(dataBaseName, server) = true) then
  begin
    dataBase.AliasName := 'testedelphi';
    dataBase.LoginPrompt := False;
    dataBase.DatabaseName := 'testedelphi';
    dataBase.Params.Values['DATABASE NAME']       := dataBaseName;
    dataBase.Params.Values['USER NAME']           := userName;
    dataBase.Params.Values['ODBC DSN']            := dataBaseName;
    dataBase.Params.Values['OPEN MODE']           := 'READ/WRITE';
    dataBase.Params.Values['BATCH COUNT']         := '200';
    dataBase.Params.Values['LANGDRIVER']          := '';
    dataBase.Params.Values['MAX ROWS']            := '-1';
    dataBase.Params.Values['SCHEMA CACHE DIR']    := '';
    dataBase.Params.Values['SCHEMA CACHE SIZE']   := '8';
    dataBase.Params.Values['SCHEMA CACHE TIME']   := '-1';
    dataBase.Params.Values['SQLPASSTHRU MODE']    := 'SHARED AUTOCOMMIT';
    dataBase.Params.Values['SQLQRYMODE']          := '';
    dataBase.Params.Values['ENABLE SCHEMA CACHE'] := 'FALSE';
    dataBase.Params.Values['ENABLE BCD']          := 'FALSE';
    dataBase.Params.Values['ROWSET SIZE']         := '20';
    dataBase.Params.Values['BLOBS TO CACHE']      := '64';
    dataBase.Params.Values['BLOB SIZE']           := '32';
    dataBase.Params.Values['PASSWORD']            := password;
    result := true;
  end;
  
end;

function TBDEConnectionSqlServer.CreateOBDCConnection(dataBase : string; server: string):Boolean;
var
  resultado: BOOL;
begin
  Result := False;
  resultado := SQLConfigDataSource(
  0,
  ODBC_ADD_DSN,
  'SQL Server',
  PChar(
    'DSN='+dataBase+#0 +
    'SERVER='+server+#0 +
    'ADDRESS='+server+#0 +
    'NETWORK=dbmssocn'#0 +
    'DATABASE='+dataBase+#0 +
    'DESCRIPTION='+server+dataBase+#0 +
    #0
  )
  );

  if(StrToInt(BoolToStr(resultado)) <> 0) then
    Result := True;
end;

end.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14476755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档