我用Delphi的ADO连接SQL Server,奇怪的是,发布时居然要配置一下客户的ODBC才能连接成功!而后就是删除ODBC配置都无所谓,而我明明都是用ADO连接数据库的啊 !
ADO怎么会这样的,(我是用Delphi7的)
怎么办?才能不用客户配ODBC?!
ADO怎么会这样的,(我是用Delphi7的)
怎么办?才能不用客户配ODBC?!
解决方案 »
- 求助:向各位大哥请教两个问题谢谢!
- 向https, post xml文件方法
- 请教如何在frame中初始化combox控件的属性
- 如何用Ole打开一个PowerPoint文档
- 在线急等 大家帮帮忙~~谢谢
- 谁能告诉我SP如何接收网关的短信呀?
- 有没有那位能提供一些DIRECTOR方面的技术文档或资料或下载网址
- 请问那一位大侠能够提供一个消息名称和在什么时候系统发出此消息的说明列表,多谢
- 怎么加密字符串呀!!!要举个例子!!
- 从TShape继承控件的问题(我对Delphi继承机制不熟,请大家说详细一点)
- 请教:combobox连接数据库问题
- 请问如何在ShellListView控件中实现如下功能(再加100分)
使用 jet4.0 不行吗?(你不会连这个不知道吧?)
不过是用ado+access
本人已经解决了连接的问题,发布后不用做任何dsn配置,其方法是在program Project1;中加入以下几句:
varconntion:string;begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDM, DM);
conntion:='Provider=MSDASQL.1;Password=yourpassword;Persist Security Info=False;Extended Properties="DBQ=';
conntion:=conntion+ExtractFilePath(Application.ExeName);
conntion:=conntion+'db\personnel.mdb;DefaultDir='+ExtractFilePath(Application.ExeName)+'db;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"';
unit2.DM.ado1.ConnectionString:=conntion;如此unit2.dm.ado1便不用做任何属性设置了,
发布时只要把personnel.mdb放在应用程序下的db目录中即可,
不知sql server能不能参照执行?另我也有一问题请指教
http://community.csdn.net/Expert/topic/3237/3237134.xml?temp=.8410761
[DATABASE]
Driver Name=MSSQL
DATABASE NAME=Master
SERVER NAME=SD //此处的SD通过主窗的ONCREATE事件获取机器名
OPEN MODE=READ/WRITE
USER NAME=sa //此处的用户名及密码通过服务器设置界面写入
PASSWORD=sa
如下:
servs := SYSINI.ReadString('DATABASE','SERVER NAME','');
users := SYSINI.ReadString('DATABASE','USER NAME','');
paswds := SYSINI.ReadString('DATABASE','PASSWORD','');《串1》 consmaster := 'Provider=SQLOLEDB.1;Password='+paswds+';Persist Security Info=True;'+
'User ID='+users+';Initial Catalog=master;Data Source='+servs+';'+
'Use Procedure for Prepare=1;Auto Translate=True;'+
'Packet Size=4096;Workstation ID='+servs;《串2》 connstr := 'Provider=SQLOLEDB.1;Password='+paswds+';Persist Security Info=True;'+
'User ID='+users+';Initial Catalog=SSMIS;Data Source='+servs+';'+
'Use Procedure for Prepare=1;Auto Translate=True;'+
'Packet Size=4096;Workstation ID='+servs;试试吧,包你好用,还不赶快谢谢我。
//-------初次访问数据库,设定访问的方式为“TCP/IP”端口1433的访问方式---------
CheckDSN(Trim(EditDataBase.Text));
DataBase_Registry(Trim(EditServer.Text)); ADOConnectionTest.Connected:=False;
ADOConnectionTest.ConnectionString:=ConnectSTR;
ADOConnectionTest.LoginPrompt:=False;procedure TLoginFrm.CheckDSN(a_DataSource: string);
var
ODBC_Reg1,ODBC_Reg2: TRegistry;
Driver_Name: string;
begin
ODBC_Reg1:=TRegistry.Create;
ODBC_Reg2:=TRegistry.Create; try
ODBC_Reg1.RootKey:=HKEY_LOCAL_MACHINE;
ODBC_Reg2.RootKey:=HKEY_CURRENT_USER; if ODBC_Reg1.OpenKey('SOFTWARE\ODBC\ODBCINST.INI\SQL Server',False) then
Driver_Name:=ODBC_Reg1.ReadString('Driver')
else
exit; ODBC_Reg2.CloseKey;
if (ODBC_Reg1.OpenKey('Software\ODBC\ODBC.INI\'+a_DataSource,False)) or
(ODBC_Reg2.OpenKey('Software\ODBC\ODBC.INI\'+a_DataSource,False))
then
RemoveDSN(a_DataSource); ODBC_Reg2.CloseKey;
if ODBC_Reg2.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
begin
ODBC_Reg2.WriteString(a_DataSource,'SQL Server');
end
else Exit; ODBC_Reg2.CloseKey;
if ODBC_Reg2.OpenKey('Software\ODBC\ODBC.INI\'+a_DataSource,True) then
begin
ODBC_Reg2.WriteString('Server',EditServer.Text);
ODBC_Reg2.WriteString('Database','master');
ODBC_Reg2.WriteString('Driver',Driver_Name);
ODBC_Reg2.WriteString('LastUser',EditUser_ID.Text);
ODBC_Reg2.WriteString('Password',EditPassword.Text);
end; ODBC_Reg1.CloseKey;
ODBC_Reg2.CloseKey;
finally
ODBC_Reg1.Free;
ODBC_Reg2.Free;
end;
end;
procedure TLoginFrm.DataBase_Registry(a_DataSource: string);
var
DataBase_Reg1: TRegistry;
begin
DataBase_Reg1:=TRegistry.Create; try
DataBase_Reg1.RootKey:=HKEY_LOCAL_MACHINE; if DataBase_Reg1.OpenKey('SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo',True) then
DataBase_Reg1.WriteString(a_DataSource,'DBMSSOCN,' + a_DataSource); DataBase_Reg1.CloseKey;
finally
DataBase_Reg1.Free;
end;
end;