我们在使用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;

解决方案 »

  1.   

    不用加这么多参数吧,除非必要
    with Database1.Params do
       begin
          Add(’DATABASE NAME=’ + DatabaseName);
          Add(’SERVER NAME=’ + ServerName);     //ServerName也可以是SQL服务器的IP地址
          Add(’USER NAME=’ + UserName);         //设置MSSQL数据的用户名称 如:sa
          Add(’BLOB SIZE=10240’);
          Add(’PASSWORD=’ + PassWord);        //设置MSSQL用户口令;
       end;
      

  2.   

    一般只要username,password,databasename,server name这几个参数就可以了,没必要这么麻烦吧