改一下://连接数据库
  SysINI:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'\dbini.ini');
  str_username:=SysINI.ReadString('vdsl', 'user', 'default string');
  str_password:=SysINI.ReadString('vdsl', 'pwd', 'default string');
  SysINI.Free;
  str_password1:= PassWordDeCode(str_password);
  try
    Database1.close;
    Database1.AliasName:='vdsl_stat';
    Database1.Params.Clear;    Database1.Params.Add('username='+str_username);//不起作用
    Database1.Params.Add('password='+str_password1);
    Database1.open;
  except
    showmessage('数据库连接失败!');
    application.Terminate;
  end;

解决方案 »

  1.   

    请各位仔细想想,这样还是不行,因为Database1.Params.Clear; 后会database中的
    好多参数都没有了,具体怎么完整写一下,我把sever name 写上了还是不行!!
      

  2.   

    原来Database 的Params里有什么其它的还加上不就行了?
    把下面的都用Database1.Params.Add()加上试试?SERVER NAME=ORA_SERVER
    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
      

  3.   

    to : peihexian(只有初中学历) 
    还是不行阿--------请问是不是BDE中的sever name 和user name 配置是在设计是固定好的,无法用程序代码动态设置,现在程序中改变这两个设置都不起作用,如果BDE中的这两个不配置的话程序连不上库的!!1
      

  4.   

    可以用TSESSION构件对BDE进行控制。包括你说的SERVER NAME 和USER NAME 的修改,应该是全部可以。
    在这里我只告诉你方法。 先找到别名,然后再对你说需的要求进行改。
      

  5.   

    BDE中的sever name 和user name 配置是在设计是固定好的?不对,我的就是动态设置的具体方法peihexian(只有初中学历)说得很明白了,你可以弄个
    简单点的试一下
      

  6.   

    to hlilna() :
    我是按照peihexian(只有初中学历)的方法把参数值重赋了一遍,但是还是不行啊???!
      

  7.   

    我是这样写的,哪儿错了阿??!
      try
         Database1.close;
         Database1.Params.clear;
         Database1.Params.add('server name=vdsl');
         Database1.Params.add('username=vdsl');
         Database1.Params.add('NET PROTOCOL=TNS');
         Database1.Params.add('OPEN MODE=READ/WRITE');
         Database1.Params.add('SCHEMA CACHE SIZE=8');
         Database1.Params.add('LANGDRIVER=');
         Database1.Params.add('SQLQRYMODE=');
         Database1.Params.add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
         Database1.Params.add('SCHEMA CACHE TIME=-1');
         database1.Params.add('MAX ROWS=-1');
         Database1.Params.add('BATCH COUNT=200');
         Database1.Params.add('ENABLE SCHEMA CACHE=FALSE');
         Database1.Params.add('SCHEMA CACHE DIR=');
         Database1.Params.add('ENABLE BCD=FALSE');
         Database1.Params.add('ENABLE INTEGERS=FALSE');
         Database1.Params.add('LIST SYNONYMS=NONE');
         Database1.Params.add('ROWSET SIZE=20');
         Database1.Params.add('BLOBS TO CACHE=64');
         Database1.Params.add('BLOB SIZE=32');
         Database1.Params.add('OBJECT MODE=TRUE');
         Database1.Params.add('password=vdsl');
         Database1.open;
       except
         showmessage('数据库连接失败!');
         application.Terminate;
       end;
      

  8.   

    Database1.Params.add('username=vdsl');
    改为:Database1.Params.add('user name=vdsl');
      

  9.   

    Database1: TDatabase;
    ......
    // 试试以下
      try
        Database1.close;
        Database1.DriverName := 'Oracle';           // ****别漏了,也可在设计时设置
        Database1.DatabaseName := '你的数据库别名';  // ****别漏了,也可在设计时设置
        Database1.LoginPrompt := False;
        Database1.Params.Clear;
        Database1.Params.Add('DATABASE NAME=' + '你的数据库名称');
        Database1.Params.Add('SERVER NAME=' + '服务器名称');
        Database1.Params.Add('USER NAME=' + '用户');
        Database1.Params.Add('PASSWORD=' + '密码');
        Database1.Open;
      except
        showmessage('数据库连接失败!');
        application.Terminate;
      end; 其它参数可不设置,数据库会按缺省值设置的!