使用ini文件,安装客户机的时候修改ini文件就可以了,具体的做法我也不是很清楚,我也是初学delphi!不过以前做的程序就是这样处理的。:)
解决方案 »
- 谁有DELPHI开发的服务器推送的示例,代码.
- 请问,activex中能否使用其他DLL文件?能否使用hook?
- Delphi开发的项目已经完成,如何打包成可执行文件?
- (大出血!!!)请教EWF中的ISAPI问题....... 在线等待...谢谢..
- 怎样在OleContainer1中调用word文档时,使鼠标无法拖动(即不准选中文字),主要是防止复制?
- 哪里有RBuilder7企业版下载
- 100分~Fast Report 读取Excel报表当作报表的问题
- 将当前系统时间转化为秒,急切在线等待!
- 3个步骤结束网站恶梦-SQL注入隐患
- 还是关于自定义控件的问题,我创建一个自定义控件,我测试时无法将该控件放到窗体上,怎么回事
- 我需要Delphi和SQL Server 2000的图片,用来美化我的论文!
- 我今天面试去的题,各位看看
管道的方法能不能把具体的写法告诉我。
是不是在计算机名后面加':pipe'就可以了?
连接串参数可以存在注册表里面;
下面是注册表中的内容:
Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\IEdu]
"provider"="SQLOLEDB.1"
"Persist Security Info"="False"
"User ID"="sa"
"password"=""
"Initial Catalog"="IEdu"
"Data Source"="INFO-38"
"Use Procedure for Prepare"="1"
"Auto Translate"="True"
"Packet Size"="4096"
"Workstation ID"="INFO-39"
"Use Encryption for Data"="False"
"Tag with column collation when possible"="False"
希望能对你有所帮助
uses TRegistry;
procedure TUserInfo.RemoteDataModuleCreate(Sender: TObject);
var
regConn : TRegistry;
strConn : String;
sProvider : String;
sPersist : String;
sUserID : String;
sPassword : String;
sCatalog : String;
sDS: String;
sPrepare : String;
sTranslate : String;
sPacketSize : String;
sWorkStation : String;
sEncryption : String;
sTag : String;
begin
//开始构造连接串
//从注册表中读取连接参数
regConn := TRegistry.Create;
try
regConn.RootKey := HKEY_CURRENT_USER;
regConn.OpenKey('\Software\IEdu',False);
sProvider := regConn.ReadString('Provider');
sPersist := regConn.ReadString('Persist Security Info');
sUserID := regConn.ReadString('User ID');
sPassword := regConn.ReadString('Password');
sCatalog := regConn.ReadString('Initial Catalog');
sDS := regConn.ReadString('Data Source');
sPrepare := regConn.ReadString('Use Procedure for Prepare');
sTranslate := regConn.ReadString('Auto Translate');
sPacketSize := regConn.ReadString('Packet Size');
sWorkStation := regConn.ReadString('Workstation ID');
sEncryption := regConn.ReadString('User Encryption for Data');
sTag := regConn.ReadString('Tag with column collation when possible');
finally
regConn.Free;
strConn := 'Provider=' + sProvider + ';Persist Security Info=' + sPersist + ';User ID=' +
sUserID + ';Password=' + sPassword + ';Initial Catalog=' + sCatalog + ';Data Source=' +
sDS + ';Use Procedure for Prepare=' + sPrepare + ';Auto Translate=' + sTranslate + ';Packet Size=' +
sPacketSize + ';Workstation ID=' + sWorkStation + ';User Encryption for Data=' + sEncryption +
';Tag with column collation when possible=' + sTag;
end; connMain.ConnectionString := strConn;
connMain.Connected := True;
end;
procedure TUserInfo.RemoteDataModuleCreate(Sender: TObject);
var
regConn : TRegistry;
strConn : String;
sProvider : String;
sPersist : String;
sUserID : String;
sPassword : String;
sCatalog : String;
sDS: String;
sPrepare : String;
sTranslate : String;
sPacketSize : String;
sWorkStation : String;
sEncryption : String;
sTag : String;
begin
//开始构造连接串
//从注册表中读取连接参数
regConn := TRegistry.Create;
try
regConn.RootKey := HKEY_CURRENT_USER;
regConn.OpenKey('\Software\IEdu',False);
sProvider := regConn.ReadString('Provider');
sPersist := regConn.ReadString('Persist Security Info');
sUserID := regConn.ReadString('User ID');
sPassword := regConn.ReadString('Password');
sCatalog := regConn.ReadString('Initial Catalog');
sDS := regConn.ReadString('Data Source');
sPrepare := regConn.ReadString('Use Procedure for Prepare');
sTranslate := regConn.ReadString('Auto Translate');
sPacketSize := regConn.ReadString('Packet Size');
sWorkStation := regConn.ReadString('Workstation ID');
sEncryption := regConn.ReadString('User Encryption for Data');
sTag := regConn.ReadString('Tag with column collation when possible');
finally
regConn.Free;
strConn := 'Provider=' + sProvider + ';Persist Security Info=' + sPersist + ';User ID=' +
sUserID + ';Password=' + sPassword + ';Initial Catalog=' + sCatalog + ';Data Source=' +
sDS + ';Use Procedure for Prepare=' + sPrepare + ';Auto Translate=' + sTranslate + ';Packet Size=' +
sPacketSize + ';Workstation ID=' + sWorkStation + ';User Encryption for Data=' + sEncryption +
';Tag with column collation when possible=' + sTag;
end;
//连接数据库
connMain.ConnectionString := strConn;
connMain.Connected := True;
end;
procedure TNTMidas.RemoteDataModuleCreate(Sender: TObject);
var
connINI : TINIFile;
pProvider : String;
pPersist : String;
pUser : String;
pPassword : String;
pCatalog : String;
pSource : String;
LocalDir:String;
connString:String;
begin
getdir(0,LocalDir);
connINI:=TINIFile.Create(LocalDir+'/'+'system.ini');
pProvider := connINI.ReadString('ConnParams','Provider','0');
pPersist := connINI.ReadString('ConnParams','Persist Security Info','0');
pUser := connINI.ReadString('ConnParams','User ID','0');
pPassword := connINI.ReadString('ConnParams','Password','0');
pCatalog := connINI.ReadString('ConnParams','Initial Catalog','0');
pSource := connINI.ReadString('ConnParams','Data Source','0');
connString := 'Provider='+ pProvider+';Persist Security Info='+pPersist+';User ID'+ pUser+';Password='+ pPassword+';Initial Catalog'+ pCatalog +';Data Source'+ pSource;
connMain.ConnectionString := connString;
connMain.Connected := true;
connINI.Free;
end;
ini 文件内容:[server_options]
sql_connNT=0 //是否nt验证server_name=
DATAsource=data source=remote_server_name
sql_user=sa
sql_pass=Sqlserver_conn=Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=CRM;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096sqlserver_connNT=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pmi;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SERVER_1delphi 程序:procedure TFormMAIN.databaseconn(Sender: TObject);
var CRMINI:tinifile;
datasource,user,pass:string;
filename:string;
begin
CRMINI:=tinifile.Create(extractfilepath(paramstr(0))+'***.ini');
{登录数据库}
TRY
datamo.adoconn.close;
if CRMINI.ReadBool('server_options','sql_connNT',false) then//判断服务器是采用什么登陆验证
begin
datamo.adoconn.ConnectionString:=CRMINI.ReadString('server_options','sqlserver_connNT','');
datamo.adoconn.ConnectionString:=datamo.adoconn.ConnectionString+datasource;
datamo.adoconn.open;
end else
begin
user:=CRMINI.ReadString('server_options','sql_user','');
pass:=CRMINI.ReadString('server_options','sql_pass','');
filename:=CRMINI.ReadString('server_options','Sqlserver_conn','');
datamo.ADOConn.ConnectionString:='';
datamo.adoconn.ConnectionString:=filename;('server_options','Sqlserver_conn','');
datamo.adoconn.ConnectionString:=datamo.adoconn.ConnectionString+datasource;
datamo.adoconn.Open(user,pass);
end;
except
showmessage('数据库登录失败,请检查登录参数,并确定sqlserver 服务已启动');
end;
CRMINI.Free;end;
Dbmssocn.dll TCP/IP 支持文件
Dbmsspxn.dll IPX 支持文件
Dbnmpntw.dll 命名管道支持文件
Ntwdblib.dll SQLServer核心文件(这个文件最重要)
这4个文件复制到system目录,
并在注册表添加:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo:
加入如下字符串值:
建名 键值
servername DBMSSOCN,servername,1433
^^ 服务器名称,也可以使ip
registerTemp : TRegistry;
DriverStr:String;
TcsKeyValue:String;
TCSBCAODBC:Boolean;begin registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE; //设置根键值为HKEY_LOCAL_MACHINE {检测系统是否注册}
TcsKeyValue:='False';
if OpenKey('Software\TCSBCASystem',False) then
if ValueExists('TCSBCA') then
TcsKeyValue:=ReadString('TCSBCA');
CloseKey; {如果系统没有注册}
if TcsKeyValue='False' then
begin
{检测系统是否有SQL Server的ODBC驱动程序}
if openkey('Software\ODBC\ODBCINST.INI\ODBC Drivers',false) then
begin
if not ValueExists('SQL Server') then
begin
ShowMessage('系统中没有装入SQL Server的ODBC驱动程序,无法启动程序');
Closekey;
halt;
end;
CloseKey;
end
else
begin
ShowMessage('系统注册表问题,无法启动程序');
CloseKey;
halt;
end; {读取SQL Server的驱动程序的存放位置}
if Openkey('Software\ODBC\ODBCINST.INI\SQL Server',false) then
DriverStr:=ReadString('Driver')
else
begin
ShowMessage('读取系统中SQL Server的ODBC驱动程序有误,导致无法加载启动程序');
Closekey;
halt;
end;
CloseKey; {检测系统是否创建TCSBCA_ODBC}
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',False) then
if ValueExists('TCSBCA_ODBC1') then
TCSBCAODBC:=True
else
TCSBCAODBC:=False;
CloseKey;
{创建TCSBCA_ODBC} if not TCSBCAODBC then
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
begin
WriteString( 'TCSBCA_ODBC', 'SQL Server' );
CloseKey;
end
else
begin
ShowMessage('写入系统注册表数据错误,无法加载启动程序');
Closekey;
halt;
end; if not TCSBCAODBC then
begin
if OpenKey('Software\ODBC\ODBC.INI\TCSBCA_ODBC',True) then
begin
WriteString( 'Database', 'TCSBCA_DB' );//指定数据库
WriteString( 'Description', 'TCSBCA系统SQL Server数据源' ); //数据源描述
//驱动程序DLL文件,根据系统安装的目录不同而不同。
WriteString( 'Driver', DriverStr ); //驱动程序
WriteString( 'LastUser', 'sa' );
WriteString( 'Server', '(local)' );
TCSBCAODBC:=True ;
CloseKey;
end
else
begin
ShowMessage('写入系统注册表数据错误,无法加载启动程序');
Closekey;
halt;
end;
end;
{向系统注册表写入系统注册信息}
if OpenKey('Software\TCSBCASystem',True) then
begin
WriteString('TCSBCA','True');
CloseKey;
end
else
begin
ShowMessage('写入系统注册表数据错误,无法加载启动程序');
Closekey;
halt;
end; end; end; if not DirectoryExists('Photo') then
begin
if not CreateDir('Photo') then
begin
ShowMessage('因无法创建 Photo 目录导致无法启动程序');
halt;
end;
end; if not DirectoryExists('StudentPhoto') then
begin
if not CreateDir('StudentPhoto') then
begin
ShowMessage('因无法创建 StudentPhoto 目录导致无法启动程序');
halt;
end;
end; if Not FileExists(ExtractFilePath(Application.ExeName)+'LocalMess.Px') then
begin
ShowMessage('重要数据文件丢失,无法启动程序');
halt;
end; Application.Initialize;
Application.Title := '北京建筑工程学院考试证管理系统';
Application.CreateForm(TMainWindows, MainWindows);
Application.Run;end.