to net1999:如果我在客户程序中定义了一个数据库(Database1)其DatabaseName 为 db1,并且将他的LoginPrompt设为False,然后我在ActiveForm上定义了一个TQuery(Query1)并设DatabaseName为db1,但是在运行时TQuery连接时仍然要输入用户名和密码。如果Database1.LoginPrompt为True则要输入两次密码,但是如果没有Database1则Query1报错说找不到db1,似乎BDE可以共享数据库名,却不共享链接。
由于是两个SESSION,所以其链接是不会共享的。
不行啊放两个TSession 它报错说TSession重名了
你说的非常有道理,所以请问AddAlias,AddPassword等几个方法是怎么用的,另外问一下一个database是不是对应一个与数据库的连接,还是一个TSession是一个连接,还是一个TQuery是一个连接。
在Delphi中,有Database元件和对象,Database对象有属性:Params和LoginPrompt,充分使用这两个属性就会自动Login数据库。下面的例程就会自动Login。
例:新建一程序(Project),在Form上放置Table,Database,DataSource,StringGrid各一个,并通过Object
Inspector将StringGrid的DataSource指向DataSource,DataSource的DataSet指向Table。双击Form,进入Form1的Create事件程序代码编辑,输入:
Database1.Params.Values['USERNAME']:='SYSDBA';
Database1.Params.Values['PASSWORD']:='masterkey';
Database1.LoginPrompt:=False;
Database1.DatabaseName:='MYDB';
Database1.AliasName:='IBLOCAL';
Table1.DatabaseName:='MYDB';
Table1.TableName:='EMPLOYEE';
Table1.Open;
运行程序(Run, F9)则可以自动Login Interbase,将数据表中的数据显示在StringGrid中。
注:由于Delphi
3安装不会自动安装Interbase数据库程序,所以如果运行以上程序必须安装Interbase。但是可以使用其他的数据服务器,如Oracle或Sybase,ODBC等。对于不需要用户名和密码的ODBC驱动,可以设置USERNAME和PASSWORD为空。
TdataBase,TSession,都不是一个连接,只有,TQuery,Tstorcproc,Ttable, 是一个数据库连接。