如何用VB连接SQL数据库做登录

 我来答
xiangjuan314
2016-01-19 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2762万
展开全部

一、界面设计

各控件名称属性分别为:label1  、text1 、label2、text2、commandok、cmdcancel

登录成功后显示的窗体:

代码设计如下:

'首先添加一个模块,写上以下通用声明和Sub main():


Public conn As ADODB.Connection    '通用(声明)

Sub main()

    Set conn = New ADODB.Connection   '通用(main)

     conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;" _

     + "User ID=sa;password=123;Initial Catalog=denglu;Data Source=127.0.0.1"      '连接数据库代码

    conn.Open

frmLogin.Show     '首先显示登录界面。也可以在工程属性中设置启动对象为Sub main()或者frmlogin窗体

End Sub

'在Frmlogin 代码窗口,为cmdok控件写以下代码:

Private Sub cmdok_Click()

  If text1.Text = "" Then

        MsgBox "用户名不能为空!", vbOKOnly + vbInformation, "友情提示"

        text1.SetFocus

        Exit Sub       '若用户名文本框内为空,则出现提示框

    End If

    If text2.Text = "" Then

        MsgBox "密码不能为空!", vbOKOnly + vbInformation, "友情提示"

        text2.SetFocus

        Exit Sub     '若输入密码文本框为空,也出现提示框

    End If

    Dim strSQl As String    

    strSQl = "select * from User1 where username='" & Trim$(text1.Text) & "' and pwd='" & Trim$(text2.Text) & "' "    

    '书写SQL代码,查询User1表中是否存在窗体中用户输入的信息。

    Dim str As New ADODB.Recordset

    Set str = New ADODB.Recordset

    str.CursorLocation = adUseClient

    str.Open strSQl, conn, adOpenStatic, adLockReadOnly

    

    With str

        If .State = adStateOpen Then .Close

        .Open strSQl

        If .EOF Then

            Try_times = Try_times + 1

            If Try_times >= 3 Then

                MsgBox "您已连续三次输入错误,系统将自动关闭", vbOKOnly + vbCritical, "警告"

                Unload Me            '若用户连续输入3次错误密码,则系统关闭

            Else

                MsgBox "对不起,用户名不存在或密码错误 !", vbOKOnly + vbQuestion, "警告"

                text1.SetFocus

                text1.Text = ""

                text2.Text = ""

            End If

        Else

            

            Unload Me    '若登录成功,则隐藏当前窗体

            

          Form2.Show    '然后显示Form窗体            

        End If

    End With

End Sub

Private Sub cmdCancel_Click()    

End         '若单击Cmdcel按钮,则结束应用程序

End Sub

运行中存在的问题:

代码中有Dim conn As adodb.connection,运行时显示"用户定义类型未定义"

解决方法:点击“工程”--“引用”找到“Microsoft ActiveX Data Object 2.6”

然后就就可以正常运行了。

day忘不掉的痛
2015-02-14 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62646 获赞数:223928
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
Option Explicit
Private Function Selectsql(SQL As String) As ADODB.Recordset '返回ADODB.Recordset对象
Dim ConnStr As String
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set Conn = New ADODB.Connection

'On Error GoTo MyErr:
ConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=登录数据库用户名(默认为sa);Password=登录数据库密码;Initial Catalog=数据库名;Data Source=服务器名(默认为:MERRYCHINA)" '这是连接SQL数据库的语句
Conn.Open ConnStr
rs.CursorLocation = adUseClient
rs.Open Trim$(SQL), Conn, adOpenDynamic, adLockOptimistic
Set Selectsql = rs
'Exit Function
'MyErr:
'Set rs = Nothing
'Set Conn = Nothing '释放相关的系统资源
'MsgBox Err.Description, vbInformation, "系统提示" '显示出错信息
End Function
Private Sub Form_Load()
Dim SQL As String
Dim rs As ADODB.Recordset
Dim X As Long
On Error GoTo Err_box
SQL = " select * from 用户表"
Set rs = Selectsql(SQL)
If rs.RecordCount > 0 Then
rs.MoveFirst
For X = 1 To rs.RecordCount
Combo1.AddItem rs.Fields("用户名").Value
rs.MoveNext
Next X
Combo1.ListIndex = 0
End If
rs.Close
Exit Sub
Err_box:
End Sub
Private Sub Command1_Click()
Dim SQL As String
Dim rs As ADODB.Recordset
If Text1.Text = "" Then
MsgBox "请输入口令!", 16
Text1.SetFocus
Exit Sub
End If
If Combo1.Text = "" Then
MsgBox "请选择登录用户!", 16
Combo1.SetFocus
Exit Sub
End If
SQL = "SELECT * FROM 用户表 WHERE 用户名='" & Combo1.Text & "' AND 密码='" & Text1.Text & "' "
Set rs = Selectsql(SQL)
If rs.RecordCount > 0 Then
Form1.Show '想要打开的主窗体
MsgBox "恭喜兄弟,登录成功!", 64, "提示"
Unload Me
Else
MsgBox "口令不对,请重新输入!", 16, "提示"
Text1.SetFocus
End If
End Sub
'**********************************************************************
'说明:1) 在工程中引用Microsoft ActiveX Data Objects 2.8 Library ,其它版本也行如:2.0
' 2) 在窗体中加Texe1.text(文本框控件),Combo1.text(组合框控件),Command1(命令按钮)各一个
' 3) 在SQL Server2000中创建数据库,新建表"用户表",表中包含"ID,姓名,密码"等字段,然后将以上代码复制,OK搞定
4) 以上方式无需加载ADO控件,方便!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式