我用一个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连接。使得运行的结果跟在我自己电脑上的效果一直。
另外,如果,客户的电脑上装了 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连接。使得运行的结果跟在我自己电脑上的效果一直。
我们怎样才能让用户自由设置数据库参数,程序自动连接? 笔者经过多次试验,使用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
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配置文件中,到时去取好了
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配置文件中,到时去取好了
如:
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是服务器名的值.
+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';
现在我的ADOCONNECT string只能生成Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=single;Data Source=XING
后面就没有任何东东了,这是何缘!