各位大虾:如果用delphi开发前台程序,数据库使用ORAcle,请教如何创建多用户(1000多用户)登录程序?Oracle如何设计用户或组,如何设计用户加密及审计?如何实现前台与后台的交互,哪种方式比较安全?
   望各位不吝赐教!万分感激!!!
请告知delphi中应设置控件,oracle应设置什么表.....
自己实在很菜,希望得到你们的帮助....

解决方案 »

  1.   

    设计一个用户、密码表,。窗口上放 database、table和edit等控键
    下边是主要的一些程序
    unit log;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Mask, StdCtrls, DB, DBTables;type
      Tw_log = class(TForm)
        Edit1: TEdit;
        Label2: TLabel;
        Label3: TLabel;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        MaskEdit1: TMaskEdit;
        Database1: TDatabase;
        Table1: TTable;
        procedure Button3Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      w_log: Tw_log;implementationuses main;{$R *.dfm}procedure Tw_log.Button3Click(Sender: TObject);
    beginw_log.hide;
    w_main.Enabled:=true;
    end;procedure Tw_log.Button2Click(Sender: TObject);
    begin
    edit1.Text:='';
    maskedit1.Text:='';
    edit1.SetFocus;
    end;procedure Tw_log.Button1Click(Sender: TObject);
    begin
     try
       Database1.Connected:=true;
       table1.Filter:='user_name='''+edit1.Text+'''';
       table1.Filtered:=true;
       table1.Open;
     except
      application.MessageBox('请与系统管理员联系。','数据库连接错误!',mb_ok);
      application.terminate;
     end;
     if table1.RecordCount=1 then
       begin
        if table1['user_password']=maskedit1.Text then
          begin    ////填写权限代码         w_log.Hide;
            w_main.enabled:=true;
            w_main.Caption:='中基资源管理系统   -用户:'+w_log.Edit1.Text;
            w_main.SetFocus;
            w_main.N33.Enabled:=true;     //显示修改密码窗口
            w_main.N2.enabled:=false;     //不可重新登录
            w_main.statusbar1.Panels[1].Text:='已连接数据库';
             w_main.statusbar1.Panels[0].Text:='准备';      end
         else
          application.MessageBox('请确认您输入的密码','密码不匹配',mb_ok);
          end
          else
          application.MessageBox('请确认用户名是否正确!','无此用户',mb_ok);      end;
       
     //  if edit1.Text='' then
      //  begin
        //edit1.SetFocus;
        //showmessage('请输入您的用户名');
        //end
       //else
        //begin
          //query1.Close;
          //query1.SQL.Add('select user_id,user_name,user_password,role_id from base_user');
          //query1.SQL.Add('where user_name='+edit1.Text);
          //query1.SQL.Add('and user_password='''+maskedit1.Text+'''');
          //query1.open;      //if (query1.RecordCount<>1) or (maskedit1.text<>query1.FieldValues['user_password']) then
            //begin
    //          showmessage('口令不对,请检查。');
      //        edit1.SetFocus;
        //    end
          // else
           // begin
            //  w_main.enabled:=true;      //w_main open
             // close;                     // close  w_log
            //end;
    //end;procedure Tw_log.FormShow(Sender: TObject);
    begin
      edit1.Text:='guester';
      maskedit1.Text:='guest';
    end;procedure Tw_log.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      w_log.Hide;
      w_main.Enabled:=true;
    end;end.
      

  2.   

    谢谢楼上,可否提供源代码及Oracle的相应设置。我刚参加工作,头要求编一个多用户程序,实现输入、汇总、查询、打印等功能,第一关我就被卡住啦!
    希望能得到你的帮助,大恩将铭记在心!
    联系:[email protected]