Delphi 怎样做一个登陆窗体
请高手能够解决我这个问题如:我做一个服务器,要求密码登陆进去。检测服务器有没有这个用户,或者如果没有可以注册,然后要登陆到服务器里去那么要怎么做。什么数据库啊,要什么数据...
请高手能够解决我这个问题
如:我做一个服务器,要求密码登陆进去。检测服务器有没有这个用户,或者如果没有可以注册,然后要登陆到服务器里去那么要怎么做。什么数据库啊,要什么数据库控件啊。我都不知道,高手能详细点吗?觉得分少我可以给追加分。麻烦大家了
好像只写了一个登陆窗体哦,还写个服务器呢。如果没有这个ID 可以注册的那样。如果写好了我可以把全部分都给你 展开
如:我做一个服务器,要求密码登陆进去。检测服务器有没有这个用户,或者如果没有可以注册,然后要登陆到服务器里去那么要怎么做。什么数据库啊,要什么数据库控件啊。我都不知道,高手能详细点吗?觉得分少我可以给追加分。麻烦大家了
好像只写了一个登陆窗体哦,还写个服务器呢。如果没有这个ID 可以注册的那样。如果写好了我可以把全部分都给你 展开
2个回答
展开全部
//需要的数据库组件就是AdoQuery 或者 Query
//连的数据库可以自定,sqlserver,Access,Mysql 都可以.
//下面是一个详细的例子,从我的一个小项目中摘的一个登陆单元
//基本思路是在主窗体FMain 的Formshow事件中创建显示这个窗体
//这个窗体判断输入的用户和密码,正确则显示Fmain,不然则提示
unit Ulogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TFlogin = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
username: TEdit;
password: TEdit;
Q: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
logtimes:integer; //登陆尝试次数
end;
var
Flogin: TFlogin;
implementation
uses Umain;
{$R *.dfm}
procedure TFlogin.FormCreate(Sender: TObject);
begin
logtimes:=0;
end;
//关闭按钮
procedure TFlogin.Button2Click(Sender: TObject);
begin
Fmain.Close;
Flogin.Close;
end;
procedure TFlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//这个按钮Click事件中判断用户和密码.
procedure TFlogin.Button1Click(Sender: TObject);
begin
//Login
if(logtimes>3) then
begin
Application.MessageBox('你尝试登陆次数太多,本程序自动关闭','警告',MB_ICONWARNING);
Button2Click(self);//调用close按钮事件关闭整个程序;
exit;
end;
if ((trim(username.Text)='') or (trim(password.Text)='')) then
begin
Application.MessageBox('用户名或者密码不允许为空','警告',MB_ICONWARNING);
exit;
end;
try
//数据库连接,用主窗体的连接字符串,关于数据库连接不懂的地方可以hi我.
Q.Connection:=Fmain.conn;
Q.SQL.Text:='select password,teamname,fullname from userinfo where username='''+username.Text+'''';
Q.Open;
except
on E: Exception do
begin
Application.MessageBox(PChar('数据库错误:'+E.Message),'错误',MB_ICONERROR);
exit;
end;
end;
if Q.RecordCount=0 then
begin
Application.MessageBox('用户名不存在','警告',MB_ICONWARNING);
inc(logtimes);
exit;
end;
if (password.Text<>Q.Fields[0].AsString) then
begin
Application.MessageBox('用户密码错误','警告',MB_ICONWARNING);
inc(logtimes);
exit;
end;
//如果验证通过,提出一些用户信息,显示主窗体,关闭自身窗体.
Fmain.username:=username.Text;
Fmain.teamname:=Q.Fields[1].AsString;
Fmain.fullname:=Q.Fields[2].AsString;
Fmain.sb.Panels[1].Text:=username.Text+'['+Fmain.fullname+','+Fmain.teamname+']';
Q.Close;
close;
end;
end.
//*****************************************************************************
//主窗体的一些事件
//主窗口中创建数据库连接
procedure TFmain.FormCreate(Sender: TObject);
var str_conn,path,ip,pass:String;
Wini:Tinifile;
begin
//我这里是从配置文件中读取的,你可以简化下....
path:=ExtractFileDir(Application.ExeName)+'\';
Wini:=Tinifile.Create(path+'db.ini');
ip:=Wini.ReadString('sysdb','server','127.0.0.1');
pass:=Wini.ReadString('sysdb','pass','');
//这里是连接的sqlserver数据库的ConnectionString
//conn 是一个TADOConnection 组件. 是整个程序的数据库连接配置
// 将来其他窗口都可以引用 Fmain.conn 获取数据库连接.
try
//str_conn:='Provider=SQLOLEDB.1;Password=sa12345;Persist Security Info=True;User ID=sa;Initial Catalog=mao;Data Source=127.0.0.1'
str_conn:='Provider=SQLOLEDB.1;Password='+pass+';Persist Security Info=True;User ID=sa;Initial Catalog=JMJ;Data Source='+ip;
conn.Connected:=false;
conn.ConnectionString:=str_conn;
conn.Connected:=true;
except
on E: Exception do
begin
showmessage('数据库设置异常,请检查db.ini文件:'+E.Message);
exit;
end;
end;
end;
//打开登录窗口.
procedure TFmain.FormShow(Sender: TObject);
begin
Application.CreateForm(TFlogin, Flogin);
Flogin.ShowModal;
end;
// 登陆窗体演示,by maodrc 2009-4-28
//连的数据库可以自定,sqlserver,Access,Mysql 都可以.
//下面是一个详细的例子,从我的一个小项目中摘的一个登陆单元
//基本思路是在主窗体FMain 的Formshow事件中创建显示这个窗体
//这个窗体判断输入的用户和密码,正确则显示Fmain,不然则提示
unit Ulogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TFlogin = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
username: TEdit;
password: TEdit;
Q: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
logtimes:integer; //登陆尝试次数
end;
var
Flogin: TFlogin;
implementation
uses Umain;
{$R *.dfm}
procedure TFlogin.FormCreate(Sender: TObject);
begin
logtimes:=0;
end;
//关闭按钮
procedure TFlogin.Button2Click(Sender: TObject);
begin
Fmain.Close;
Flogin.Close;
end;
procedure TFlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//这个按钮Click事件中判断用户和密码.
procedure TFlogin.Button1Click(Sender: TObject);
begin
//Login
if(logtimes>3) then
begin
Application.MessageBox('你尝试登陆次数太多,本程序自动关闭','警告',MB_ICONWARNING);
Button2Click(self);//调用close按钮事件关闭整个程序;
exit;
end;
if ((trim(username.Text)='') or (trim(password.Text)='')) then
begin
Application.MessageBox('用户名或者密码不允许为空','警告',MB_ICONWARNING);
exit;
end;
try
//数据库连接,用主窗体的连接字符串,关于数据库连接不懂的地方可以hi我.
Q.Connection:=Fmain.conn;
Q.SQL.Text:='select password,teamname,fullname from userinfo where username='''+username.Text+'''';
Q.Open;
except
on E: Exception do
begin
Application.MessageBox(PChar('数据库错误:'+E.Message),'错误',MB_ICONERROR);
exit;
end;
end;
if Q.RecordCount=0 then
begin
Application.MessageBox('用户名不存在','警告',MB_ICONWARNING);
inc(logtimes);
exit;
end;
if (password.Text<>Q.Fields[0].AsString) then
begin
Application.MessageBox('用户密码错误','警告',MB_ICONWARNING);
inc(logtimes);
exit;
end;
//如果验证通过,提出一些用户信息,显示主窗体,关闭自身窗体.
Fmain.username:=username.Text;
Fmain.teamname:=Q.Fields[1].AsString;
Fmain.fullname:=Q.Fields[2].AsString;
Fmain.sb.Panels[1].Text:=username.Text+'['+Fmain.fullname+','+Fmain.teamname+']';
Q.Close;
close;
end;
end.
//*****************************************************************************
//主窗体的一些事件
//主窗口中创建数据库连接
procedure TFmain.FormCreate(Sender: TObject);
var str_conn,path,ip,pass:String;
Wini:Tinifile;
begin
//我这里是从配置文件中读取的,你可以简化下....
path:=ExtractFileDir(Application.ExeName)+'\';
Wini:=Tinifile.Create(path+'db.ini');
ip:=Wini.ReadString('sysdb','server','127.0.0.1');
pass:=Wini.ReadString('sysdb','pass','');
//这里是连接的sqlserver数据库的ConnectionString
//conn 是一个TADOConnection 组件. 是整个程序的数据库连接配置
// 将来其他窗口都可以引用 Fmain.conn 获取数据库连接.
try
//str_conn:='Provider=SQLOLEDB.1;Password=sa12345;Persist Security Info=True;User ID=sa;Initial Catalog=mao;Data Source=127.0.0.1'
str_conn:='Provider=SQLOLEDB.1;Password='+pass+';Persist Security Info=True;User ID=sa;Initial Catalog=JMJ;Data Source='+ip;
conn.Connected:=false;
conn.ConnectionString:=str_conn;
conn.Connected:=true;
except
on E: Exception do
begin
showmessage('数据库设置异常,请检查db.ini文件:'+E.Message);
exit;
end;
end;
end;
//打开登录窗口.
procedure TFmain.FormShow(Sender: TObject);
begin
Application.CreateForm(TFlogin, Flogin);
Flogin.ShowModal;
end;
// 登陆窗体演示,by maodrc 2009-4-28
展开全部
写个简单的例子给你
假设条件:数据名:aaa 密码:123 服务器名称:192.168.1.1
数据表名:bbb 数据表内用户名和密码的字段名称分别为:USE,PWD
1.用AdoConnection1连接数据库
AdoConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=aaa;Data Source=192.168.1.1';
Adoconnection1.LoginPrompt:=False;
Adoconnection1.Connected:=True;
2.用AdoQuery1打开数据表
AdoQuery1.sql.clear;
AdoQuery1.sql.add('select * from bbb');
AdoQuery1.open;
3.假设你是用edit1和edit2两个文本框来输入用户名和密码,那么使用搜寻语句搜寻数据库的资料,如果有就登录,没有就报错.
if (edit1.text='') or (edit2.text='') then
begin
Application.MessageBox('请输入用户名或密码资料!', '警告', MB_OK +
MB_ICONWARNING);
end
else
begin
AdoQuery1.CLOSE
AdoQuery1.sql.clear;
AdoQuery1.sql.add('select * from bbb where use='''+edit1.text+''' and pwd='''+edit2.text+'''');
AdoQuery1.open;
if AdoQuery1.recordcount=0 then
begin
Application.MessageBox('您输入的用户名或密码资料错误,请确认!', '警告', MB_OK + MB_ICONWARNING);
end
else
begin
Application.MessageBox('登录OK', '提示', MB_OK + MB_ICONINFORMATION);
end;
end;
上面就是我做的一个简单的例子,你参考一下
不明白你说的服务器是什么意思?????
假设条件:数据名:aaa 密码:123 服务器名称:192.168.1.1
数据表名:bbb 数据表内用户名和密码的字段名称分别为:USE,PWD
1.用AdoConnection1连接数据库
AdoConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=aaa;Data Source=192.168.1.1';
Adoconnection1.LoginPrompt:=False;
Adoconnection1.Connected:=True;
2.用AdoQuery1打开数据表
AdoQuery1.sql.clear;
AdoQuery1.sql.add('select * from bbb');
AdoQuery1.open;
3.假设你是用edit1和edit2两个文本框来输入用户名和密码,那么使用搜寻语句搜寻数据库的资料,如果有就登录,没有就报错.
if (edit1.text='') or (edit2.text='') then
begin
Application.MessageBox('请输入用户名或密码资料!', '警告', MB_OK +
MB_ICONWARNING);
end
else
begin
AdoQuery1.CLOSE
AdoQuery1.sql.clear;
AdoQuery1.sql.add('select * from bbb where use='''+edit1.text+''' and pwd='''+edit2.text+'''');
AdoQuery1.open;
if AdoQuery1.recordcount=0 then
begin
Application.MessageBox('您输入的用户名或密码资料错误,请确认!', '警告', MB_OK + MB_ICONWARNING);
end
else
begin
Application.MessageBox('登录OK', '提示', MB_OK + MB_ICONINFORMATION);
end;
end;
上面就是我做的一个简单的例子,你参考一下
不明白你说的服务器是什么意思?????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询