Ⅰ 怎样用VB编写一个登陆系统,可以注册账号的那种
VB编写一个可以注册帐号的登录系统步骤:
1)1)首先需要用数据库软件(如ACCESS软件)建立一个数据库,新建几个表,用以记录帐号密码的表、登录日志表和其他与此有关的所需要的表等。
2)VB新建数据工程,此时VB6集成调试环境左边工具箱内已加载了有关数据库编程必须的控件。
3)然后在FORM1窗体中添加ADO数据控件,右键-ADODC1控件属性页-使用连接字符串,选生成,在提供者选项中选合适的OLE DB连接数据库等。在ADODC1控件属性页使用连接字符串空白文本窗口中就有一长串字符串,注意该字符串可复制到程序代码用于编程。
ADODC1控件属性页的数据源内有命令文本(SQL)编写窗口可编写SQL查询语言。该窗口的SQL语句可复制到程序代码用于编程。
4)可以将SQL查询语句赋值给ADO数据控件的RecordSource属性实现。
5)数据的输入、修改等可灵活应用文本框或数据表格控件与ADO数据控件通过代码绑定。
6)想使用ADO数据对象,也可将ADO数据控件所写的代码较方便的移植给ADO数据对象。
以下是用ADO数据对象编写的登录和注册的代码:
1)标准模块代码:
OptionExplicit
PublicloginnameAsString
PubliccnAsNewADODB.Connection'定义数据库的连接存放数据和代码
PublicrsAsNewADODB.Recordset
PublicsqlAsString
PublicNewnameAsString
2)注册窗体代码:
OptionExplicit
DimPasswordAsString
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13AndText1<>""Then
sql="select*from用户管理where用户名='"&Text1.Text&"'"'and密码='"&Text2.Text&"'"
cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"datadata.mdb;PersistSecurityInfo=False"
cn.Open
rs.CursorLocation=adUseClient
rs.Opensql,cn,adOpenDynamic,adLockOptimistic
Ifrs.EOF=TrueThen'没有该用户名可以注册
MsgBox"用户名可以注册!"
rs.Close
cn.Close
Newname=Text1.Text
Text4=Newname
Text2.SetFocus
Else
MsgBox"该用户名已经存在,换名注册!"
Text1.Text=""
Text1.SetFocus
EndIf
EndIf
ExitSub
finish:
MsgBoxErr.Description
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13AndText2<>""Then
Password=Text2.Text
Text5=Password
Text3.SetFocus
EndIf
EndSub
PrivateSubText3_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13AndText3.Text=Text2.TextThen
Command3.Enabled=True
Command3.SetFocus
ElseIfKeyAscii=13AndText3.Text<>Text2.TextThen
Text3=""
Text3.SetFocus
EndIf
EndSub
PrivateSubCommand1_Click()
UnloadMe
EndSub
PrivateSubCommand3_Click()
sql="select*from用户管理"
cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"datadata.mdb;PersistSecurityInfo=False"
cn.Open
rs.CursorLocation=adUseClient
rs.Opensql,cn,adOpenDynamic,adLockOptimistic
rs.AddNew
rs.Fields(0)=Newname
rs.Fields(1)=Password
rs.Update
rs.Close
cn.Close
Command3.Enabled=False
EndSub
3)登录窗体代码:
OptionExplicit
DimpnumAsInteger
PrivateSubCommand1_Click()
OnErrorGoTofinish'防错代码,防止意外而导致的退出
sql="select*from用户管理where用户名='"&Text1.Text&"'and密码='"&Text2.Text&"'"
cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"datadata.mdb;PersistSecurityInfo=False"
cn.Open
rs.CursorLocation=adUseClient
rs.Opensql,cn,adOpenDynamic,adLockOptimistic
'以上使用最通用的方法来查询数据库中是否有匹配的记录
Ifrs.EOF=TrueThen'如果没有记录则说明用户或密码为错误的
Ifpnum<2Then'pnum就是密码验证次数,当次数超过3次,系统会自动保护退出
pnum=pnum+1
MsgBox"用户名或密码错误!",vbInformation,"错误次数:"&pnum
rs.Close
cn.Close
Text1.Text=""
Text2.Text=""
Text1.SetFocus
ExitSub
Else
MsgBox"用户名或密码错误超过三次,系统会自动退出",vbInformation,"提示"
End
EndIf
Else
loginname=rs.Fields(0)
Form1.Show
rs.Close
cn.Close
EndIf
ExitSub
finish:
MsgBoxErr.Description
rs.Close
cn.Close
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'获取按键,如果是回车就运行image_click按钮的内容
CallCommand1_Click
EndIf
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Text2.SetFocus
EndIf
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubCommand3_Click()
frmZhuce.Show
EndSub