我用一个AdoConnection来连接一个SQL SERVER 2000数据库。那么我打包后 如何让我的程序在没有装数据库的电脑上运行?
另外,如果,客户的电脑上装了 SQL server 2K.那么,我的程序如何来配置,使得我的DELPHI程序 跟客户的电脑上装的 SQL server 2K关联。要知道 我的AdoConnection,在写程序时已经定死了。代码如下:
Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=picture;Data Source=BOYYUAN;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=BOYYUAN;Use Encryption for Data=False;Tag with column collation when possible=False那我是不可能更改的,况且我是在设计期做的,那么我如何让客户来配置呢?总不可能 我的SQL SERVER 2000跟客户的SQL SERVER2000一样吧。我的意思是,我的DELPHI程序,在客户那里安装好了 之后,怎样才能合理的跟客户的SQL server 2K连接。使得运行的结果跟在我自己电脑上的效果一直。

解决方案 »

  1.   

    我们在使用Delphi编写以Micorsoft SQL Server为后台数据库的时候,经常为程序的发布担忧:
    我们怎样才能让用户自由设置数据库参数,程序自动连接? 笔者经过多次试验,使用Delphi自带的
    DataBase数据库连接控件可以很好的实现SQL数据库的自动连接。实现方法如下:procedure ConnectDatabase(ServerName,DatabaseName,UserName,PassWord:String);
    var
      Database1:TDataBase;
    begin
       Database1.DatabaseName := ’Test’;
       Database1.DriverName := ’MSSQL’;
       LoginPrompt := False;
       with Database1.Params do
       begin
          Add(’DATABASE NAME=’ + DatabaseName);
          Add(’SERVER NAME=’ + ServerName);     //ServerName也可以是SQL服务器的IP地址
          Add(’USER NAME=’ + UserName);         //设置MSSQL数据的用户名称 如:sa
          Add(’OPEN MODE=READ/WRITE’);
          ADd(’SCHEMA CACHE SIZE=8’);
          Add(’BLOB EDIT LOGGING=’);
          Add(’LANGDRIVER=’);
          Add(’SQLQRYMODE=’);
          Add(’SQLPASSTHRU MODE=SHARED AUTOCOMMIT’);
          Add(’DATE MODE=0’);
          Add(’SCHEMA CACHE TIME=-1’);
          Add(’MAX QUERY TIME=300’);
          Add(’MAX ROWS=-1’);
          Add(’BATCH COUNT=200’);
          Add(’ENABLE SCHEMA CACHE=FALSE’);
          Add(’SCHEMA CACHE DIR=’);
          Add(’HOST NAME=’);
          Add(’APPLICATION NAME=’);
          Add(’NATIONAL LANG NAME=’);
          Add(’ENABLE BCD=FALSE’);
          Add(’TDS PACKET SIZE=4096’);
          Add(’BLOBS TO CACHE=64’);
          Add(’BLOB SIZE=32’);
          Add(’PASSWORD=’ + PassWord);        //设置MSSQL用户口令;
       end;
       try
         Database1.Connected := true;
         Query1.DatabaseName := ’Test’;
         ...   //数据库查询
        
       Except
         Application.MessageBox(’数据库连接错误!’,’错误’,MB_OK+MB_ICONERROR);
       end;
    end;                                                        Jming
                                                              2002.4.12
      

  2.   

    和用dataBase一样的
    AdoConnection的connectstring你动态的变一下就好了
    AdoConnection.connectstring := 
    Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=picture;Data Source=BOYYUAN;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=BOYYUAN;Use Encryption for Data=False;Tag with column collation when possible=False;其中的服务器名改一下就好了,发服务器名放在ini配置文件中,到时去取好了
      

  3.   

    和用dataBase一样的
    AdoConnection的connectstring你动态的变一下就好了
    AdoConnection.connectstring := 
    Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=picture;Data Source=BOYYUAN;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=BOYYUAN;Use Encryption for Data=False;Tag with column collation when possible=False;其中的服务器名改一下就好了,发服务器名放在ini配置文件中,到时去取好了
      

  4.   

    同意楼上的.
    如:
    procedure Tdlform.FormCreate(Sender: TObject);
    var
      str,filename:string;
    begin
      filename:=ExtractFilepath(application.ExeName)+'kkxt.ini';
      myinifile:=Tinifile.Create(filename);
      servername:=myinifile.ReadString('程序参数','服务器名','');
      if trim(servername)='' then  servername:=inputbox('服务器名输入框','请输入服务器名:','');
      str:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=kkxt;Data Source='+servername;
      zgksxtdatamodule.kkxt.ConnectionString:=str;
    end;
    写信息:
     myinifile.WriteString('程序参数','服务器名',servername);
    '程序参数'是小节名,'服务器名'是标识,servername是服务器名的值.
      

  5.   

    adoconnection.connectionstring:='Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=picture;Data Source='
    +edit1.text//这里加入你的服务器名称的变量
    +';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=BOYYUAN;Use Encryption for Data=False;Tag with column collation when possible=False';
      

  6.   

    Workstation ID=BOYYUAN这里不用变吗,这好像是计算机名,
    现在我的ADOCONNECT string只能生成Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=single;Data Source=XING
    后面就没有任何东东了,这是何缘!