怎样实现在程序中动态的连接数据库?

djwdjw 2003-11-06 04:11:28
使用dbexpress中的TSQLConnection连接数据库时怎样写动态代码连接,不是在IDE中设置选项,我是这样做的:
procedure TForm1.FormCreate(Sender: TObject);
var
Str:TStrings;
con:TSQLConnection;
begin
try
str:=TstringList.Create;
str.Add('DriverName=Oracle');
str.Add('DataBase=adv');
str.add('User_Name=djw');
str.add('Password=djw');
str.add('RowsetSize=20');
str.add('BlobSize=-1');
str.add('ErrorResourceFile= ');
str.add('LocaleCode=0000');
str.add('Oracle TransIsolation=ReadCommited');
str.Add('OS Authentication=False');
str.Add('Multiple Transaction=False');
str.Add('Trim Char=False');
//ShowMessage(str.Text);
con:=TSQLConnection.Create(self);

con.Params:=str;
con.ConnectionName:='OracleConnection';
con.DriverName:='Oracle';
con.GetDriverFunc:='getSQLDriverORACLE';
con.LibraryName:='dbexpora.dll';
con.VendorLib:='oci.dll';
con.LoginPrompt:=false;
con.Connected:=true;
ShowMessage('Success');

str.Free;
except
on E:Exception do
ShowMessage(E.Message);
end;
end;
提示'Missing DriverName property'错误。
...全文
79 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
djwdjw 2003-11-07
  • 打赏
  • 举报
回复
juwuyi(我有,我可以) 的办法可以解决这个问题,不过对于Oracle数据库,DataBase=orcldatabase,User name换成User_Name就可以了正确运行了。其他方法好像不行,因为在TSQLConnection没有ConnectionString方法。
dy_paradise 2003-11-07
  • 打赏
  • 举报
回复
先创建一个ODBC,然后 .ConnectionString := 'DSN='+ x; (x为ODBC的名称)
chenkandy 2003-11-07
  • 打赏
  • 举报
回复
給你一個例子阿
讀INI文件
var
LOCINI:TINIFILE;
BEGIN
GETDIR(0,PATH);
LOCINI:=TINIFILE.Create(PATH+'\SFIS.INI');
try
G_USER:=LOCINI.ReadString('OLEDB','USER','');
G_PASSWORD:=LOCINI.ReadString('OLEDB','PASSWORD','');
G_DB:=LOCINI.ReadString('OLEDB','DB','');
finally
Locini.Free;
end;

連接ADOCONNECTION .
ADODB.Close;
ADODB.Connected :=FALSE;
ADODB.ConnectionString :='Provider=MSDAORA.1;Password='''+G_PASSWORD+''';User ID='''+G_USER+''';Data Source='''+G_DB+''';Persist Security Info=True';
adodb.LoginPrompt :=false;
ADODB.Connected :=TRUE;
ADODB.Open;

ADOQUERY1.CONNECTIONSTRING:=ADODB.NAME;
juwuyi 2003-11-06
  • 打赏
  • 举报
回复
我是在database里的connentionstring里找的
djwdjw 2003-11-06
  • 打赏
  • 举报
回复
对于
DriverName=Oracle
DataBase=dujiawei
User_Name=djw
Password=djw
RowsetSize=20
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000
Oracle TransIsolation=ReadCommited
OS Authentication=False
Multiple Transaction=False
Trim Char=Fal
上面这段信息的设置我是从TSQLConnection的ConnectionName(双击TSQLConnection对象就可以取得)为OracleConnection中看到的,在对象的Params中也可以看到,至少应该可以联接数据库,选中窗体上的TSQlConnection对象双击,设置Connection name为OracleConnection,右边就可以看到Key-Value,如上所示,就是不知道为什么写在程序中就出现错误。
saien 2003-11-06
  • 打赏
  • 举报
回复
up
nhdj 2003-11-06
  • 打赏
  • 举报
回复
哦,学习,up....
juwuyi 2003-11-06
  • 打赏
  • 举报
回复
//偶的
SERVER NAME=orcldatabase
USER NAME=DLYX
NET PROTOCOL=TNS
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=
SQLQRYMODE=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ENABLE INTEGERS=FALSE
LIST SYNONYMS=NONE
ROWSET SIZE=20
BLOBS TO CACHE=64
BLOB SIZE=32
OBJECT MODE=TRUE
PASSWORD=123

-------------
User_Name 应该为 User Name
还有很多东西都多余的,都按默认都可以了
lsk2000 2003-11-06
  • 打赏
  • 举报
回复
单步运行,看str最后是个什么样子

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧