有哪位大侠知道在Delphi中通过ODBC连接SYBASE数据库的方法?
1.我想在程序里通过动态的配置ODBC参数来连接SYBASE数据库,我使用的是TDATABASE组件。
2.还有我想不用手动去配置ODBC,而是通过程序来处理,请问有什么方法可以完成?
我以前是通过BDE来连接数据库的,但程序总是报找不到数据库别名,不知道是不是我设置的有问题呢还是我找不到方法。
我的程序源码是://取配置文件信息
MSGwuhanIni:=TIniFile.Create(GetCurrentDir+'\hongyun.ini');
SERVER_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'SERVER_NAME', '')),word(1));
DATABASE_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_NAME', '')),word(1));
DriverName:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DriverName', '')),word(1));
ODBC_DSN:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'ODBC_DSN', '')),word(1));
HOST_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'HOST_NAME', '')),word(1));
DATABASE_USER:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_USER', '')),word(1));
PASSWORD:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'PASSWORD', '')),word(1)); {SERVER_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'SERVER_NAME', ''));
DATABASE_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_NAME', ''));
HOST_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'HOST_NAME', ''));
DATABASE_USER:=Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_USER', ''));
PASSWORD:=Trim(MSGwuhanIni.ReadString('DATABASE', 'PASSWORD', '')); } //MyList := TStringList.Create;
try
//****************下面这一段是通过bde来连接数据库的*********//
{with MyList do
begin
Add('SERVER NAME='+SERVER_NAME);
Add('USER NAME='+DATABASE_USER);
Add('DATABASE NAME='+DATABASE_NAME);
Add('DATABASE NAME='+HOST_NAME);
Add('PASSWORD='+PASSWORD);
Add('SQLPASSTHRU MODE=NOT SHARED');
end;}
//****************上面这一段是通过bde来连接数据库的*********//
with Database1 do
begin
//****************下面这一段是通过bde来连接数据库的*********//
//Session.Active:=false;
//Session.Close;
//Session.DeleteAlias('hongyun'); //删除数据库别名
//Session.AddAlias('hongyun', 'SYBASE', MyList);//增加数据库别名
//Session.SaveConfigFile; {BDE配置文件存盘} //LoginPrompt:=False;
//Session.Open;
//Session.Active:=true;
//****************上面这一段是通过bde来连接数据库的*********//
Connected:=False;
Close;
DatabaseName:='hongyun';
Database1.DriverName:=DriverName;
Params.Clear;
Params.Add('DATABASE NAME='+DATABASE_NAME);
Params.Add('SERVER NAME='+SERVER_NAME);
Params.Add('ODBC DSN='+ODBC_DSN);
Params.Add('USER NAME='+DATABASE_USER);
Params.Add('HOST NAME'+HOST_NAME);
Params.Add('PASSWORD='+PASSWORD);
LoginPrompt:=False;
Open;
Connected:=true;
end;
finally
//MyList.Free;
end;上面的代码是写在LonginForm的FormCreate的事件中,大家看看有什么问题???3.当程序运行没有问题时,我通过InstallShield做了一个安装程序,但程序运行就有问题,报找不到数据库别名的错误信息,是不是要在打包时要SYBASE的客户端应用页要包含?
请各位大侠指教,谢谢!
1.我想在程序里通过动态的配置ODBC参数来连接SYBASE数据库,我使用的是TDATABASE组件。
2.还有我想不用手动去配置ODBC,而是通过程序来处理,请问有什么方法可以完成?
我以前是通过BDE来连接数据库的,但程序总是报找不到数据库别名,不知道是不是我设置的有问题呢还是我找不到方法。
我的程序源码是://取配置文件信息
MSGwuhanIni:=TIniFile.Create(GetCurrentDir+'\hongyun.ini');
SERVER_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'SERVER_NAME', '')),word(1));
DATABASE_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_NAME', '')),word(1));
DriverName:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DriverName', '')),word(1));
ODBC_DSN:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'ODBC_DSN', '')),word(1));
HOST_NAME:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'HOST_NAME', '')),word(1));
DATABASE_USER:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_USER', '')),word(1));
PASSWORD:=EncryptIt.Decrypt(Trim(MSGwuhanIni.ReadString('DATABASE', 'PASSWORD', '')),word(1)); {SERVER_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'SERVER_NAME', ''));
DATABASE_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_NAME', ''));
HOST_NAME:=Trim(MSGwuhanIni.ReadString('DATABASE', 'HOST_NAME', ''));
DATABASE_USER:=Trim(MSGwuhanIni.ReadString('DATABASE', 'DATABASE_USER', ''));
PASSWORD:=Trim(MSGwuhanIni.ReadString('DATABASE', 'PASSWORD', '')); } //MyList := TStringList.Create;
try
//****************下面这一段是通过bde来连接数据库的*********//
{with MyList do
begin
Add('SERVER NAME='+SERVER_NAME);
Add('USER NAME='+DATABASE_USER);
Add('DATABASE NAME='+DATABASE_NAME);
Add('DATABASE NAME='+HOST_NAME);
Add('PASSWORD='+PASSWORD);
Add('SQLPASSTHRU MODE=NOT SHARED');
end;}
//****************上面这一段是通过bde来连接数据库的*********//
with Database1 do
begin
//****************下面这一段是通过bde来连接数据库的*********//
//Session.Active:=false;
//Session.Close;
//Session.DeleteAlias('hongyun'); //删除数据库别名
//Session.AddAlias('hongyun', 'SYBASE', MyList);//增加数据库别名
//Session.SaveConfigFile; {BDE配置文件存盘} //LoginPrompt:=False;
//Session.Open;
//Session.Active:=true;
//****************上面这一段是通过bde来连接数据库的*********//
Connected:=False;
Close;
DatabaseName:='hongyun';
Database1.DriverName:=DriverName;
Params.Clear;
Params.Add('DATABASE NAME='+DATABASE_NAME);
Params.Add('SERVER NAME='+SERVER_NAME);
Params.Add('ODBC DSN='+ODBC_DSN);
Params.Add('USER NAME='+DATABASE_USER);
Params.Add('HOST NAME'+HOST_NAME);
Params.Add('PASSWORD='+PASSWORD);
LoginPrompt:=False;
Open;
Connected:=true;
end;
finally
//MyList.Free;
end;上面的代码是写在LonginForm的FormCreate的事件中,大家看看有什么问题???3.当程序运行没有问题时,我通过InstallShield做了一个安装程序,但程序运行就有问题,报找不到数据库别名的错误信息,是不是要在打包时要SYBASE的客户端应用页要包含?
请各位大侠指教,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货