如何用delphi连接数据库做一个登陆界面

如何用delphi连接数据库做一个登陆界面,第1张

请参阅以下代码(代码源于网络):

var

  Alogo: TAlogo;

implementation

uses main;

var

  username, password: string;

{$R dfm}

procedure TAlogoBitBtn2Click(Sender: TObject);

begin

  AlogoClose;

end;

procedure TAlogoBitBtn1Click(Sender: TObject);

begin

  try

    with adoquery1 do

    begin

      Close;

      sqlclear;

      sqladd('select  from user_master where a=:a and b=:b ');

      parametersParamByName('a')Value := trim(combobox1Text);

      parametersParamByName('b')Value := trim(edit1Text);

      if combobox1Text = '' then

      begin

        applicationMessageBox('请输入用户名', '提示信息', 64);

        combobox1SetFocus;

        exit;

      end;

      if edit1Text = '' then

      begin

        applicationMessageBox('请输入密码', '提示信息', 64);

        edit1SetFocus;

        exit;

      end;

      open;

    end;

    if adoquery1RecordCount <> 0 then

    begin

      username := combobox1Text;

      password := edit1Text;

      applicationMessageBox('登陆成功', '提示信息', 64);

      amainshow; // 需要再建立一个form窗口用来作为登录正确后显示的窗体

      selfHide;

    end

    else

      applicationMessageBox('输入的用户名或密码错误', '提示信息', 64);

  except

    applicationMessageBox('登陆失败', '提示信息', 64);

  end;

end;

“追问 想请问下ExecuteScalar的作用是什么,vs给出的提示信息悲剧的我看不明白~~

我改成:if((int)cxxExecuteScalar()==1)

然后就成了“数据库无法访问””

因其返回查询结果的首行首列,因而上述判断多半会错,建议使用ExecuteReader方法,得到后判断是否有值if(readerRead()),即可知道其是否为合法用户

如果想知道ExecuteNonQuery、ExecuteScalar、ExecuteReader的区别,建议查看msdn帮助文档

界面设计:

1ComboBox 名为: CboName 用来输入或显示用户名

2TextBox 名为:TxtPassword 用来输入密码

3TextBox 名为:TxtPasswordSure 在注册时用来输入确认密码

4CheckBox 名为:ChkNew 用来新注册 Caption属性:新建用户

5CommandButton 名为:CmdLoad 用来登陆或注册 Caption属性:登陆

6CommandButton 名为:CmdExit 用以退出 Caption 属性:退出

7Data 不需要多设置,这个控件不用的,只是第一次加载时起作用Visible属性:False

代码如下:

Dim MyTable As TableDef

Dim MyField As Field

Dim MyDatabase As Database

Dim Myrs As Recordset

Dim StrRule As String

Private Sub CboName_Change()

If Len(CboNameText) > 8 Then

CboNameSelStart = 0

CboNameSelLength = 8

CboNameText = CboNameSelText

CboNameSelStart = 8

End If

End Sub

Private Sub ChkNew_Click()

If ChkNewValue = 0 Then

LblPasswordsureVisible = False

TxtPasswordSureVisible = False

CmdLoadCaption = "登陆"

Else

LblPasswordsureVisible = True

TxtPasswordSureVisible = True

CmdLoadCaption = "注册"

End If

CboNameSetFocus

End Sub

Private Sub CmdExit_Click()

End

End Sub

Private Sub CmdLoad_Click()

If CboNameText = "" Then

MsgBox "请输入用户名!", vbExclamation, "友情提示"

CboNameSetFocus

Exit Sub

ElseIf TxtPasswordText = "" Then

MsgBox "请输入密码!", vbExclamation, "友情提示"

TxtPasswordSetFocus

Exit Sub

ElseIf TxtPasswordSureText = "" And TxtPasswordSureVisible = True Then

MsgBox "请输入确认密码!", vbExclamation, "友情提示"

TxtPasswordSureSetFocus

Exit Sub

End If

If CmdLoadCaption = "注册" Then

If TxtPasswordSureText <> TxtPasswordText Then

MsgBox "密码和确认密码不同!", vbExclamation, "Sorry"

TxtPasswordSureSetFocus

Exit Sub

End If

If CheckStr(CboNameText) Then

MsgBox "用户名可以是中文,也可以是英文或数字,但其中不能带有" & vbNewLine & "像“" & StrRule & "”的字符!", vbExclamation, "友情提示"

CboNameSetFocus

Exit Sub

ElseIf CboNameText = "user" Then

MsgBox "user是保留用字,不能用作用户名!", vbExclamation, "Sorry"

Exit Sub

End If

Set MyDatabase = Workspaces(0)OpenDatabase(AppPath & "\save")

Set Myrs = MyDatabaseOpenRecordset("select from user where Name = " & Chr(34) & CboNameText & Chr(34))

If MyrsRecordCount > 0 Then

MsgBox "用户已经存在", vbExclamation, "友情提示"

CboNameSetFocus

Exit Sub

End If

Set Myrs = MyDatabaseOpenRecordset("select from user")

MyrsAddNew

MyrsFields("name") = CboNameText

MyrsFields("password") = TxtPasswordText

MyrsFields("logontime") = Now

MyrsFields("Best") = "0"

MyrsFields("Run") = "0"

MyrsUpdate

MyrsClose

Set MyTable = MyDatabaseCreateTableDef(CboNameText)

Set MyField = MyTableCreateField("Result", 10, 4)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("RightRatio", 10, 6)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("TestTime", 10, 19)

MyTableFieldsAppend MyField

MyDatabaseTableDefsAppend MyTable

MsgBox "注册成功!", vbExclamation, "恭喜你"

CboNameAddItem (CboNameText)

ChkNewValue = 0

MyDatabaseClose

Else '登陆

If TxtPasswordText <> TxtPasswordSureText And TxtPasswordSureVisible = True Then

MsgBox "密码与确认密码不同,请重新输入!", vbExclamation, "友情提示"

TxtPasswordSetFocus

Exit Sub

End If

Set MyDatabase = Workspaces(0)OpenDatabase(AppPath & "\save")

Set Myrs = MyDatabaseOpenRecordset("select from user where name =" & Chr(34) & CboNameText & Chr(34))

If MyrsRecordCount = 0 Then

MsgBox "用户不存在!", vbExclamation, "友情提示"

Exit Sub

End If

MyrsMoveFirst

If TxtPasswordText = MyrsFields("password") Then '登陆成功

MyrsClose

Set Myrs = MyDatabaseOpenRecordset("select from user")

If MyrsBOF = False Then MyrsMoveLast

If MyrsBOF = False Then MyrsMoveFirst

MyrsMoveFirst

For i = 0 To MyrsRecordCount - 1

MyrsEdit

If MyrsFields("Name") = CboNameText Then

MyrsFields("Run") = "1"

Else

MyrsFields("Run") = "0"

End If

MyrsUpdate

MyrsMoveNext

Next

'登陆成功,你加入要执行的 *** 作

Unload Me '登陆窗口卸载

Else

Static WrongTime As Integer

WrongTime = WrongTime + 1

If WrongTime = 2 Then End

MsgBox "密码错误!", vbExclamation, "友情提示"

End If

MyrsClose

MyDatabaseClose

End If

End Sub

Private Sub Form_Activate()

StrRule = "`~!@#$%^&()_-+=|\;:<,>/" & Chr(34) & Chr(39)

If Dir(AppPath & "\savemdb", vbHidden) = "" Then '数据文件不见了

Set MyDatabase = CreateDatabase(AppPath & "\save", dbLangGeneral)

Set MyTable = MyDatabaseCreateTableDef("user")

Set MyField = MyTableCreateField("Name", 10, 16)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("Password", 10, 6)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("LogonTime", 10, 19)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("Best", 10, 4)

MyTableFieldsAppend MyField

Set MyField = MyTableCreateField("Run", 10, 1)

MyTableFieldsAppend MyField

MyDatabaseTableDefsAppend MyTable

ChkNewValue = 2

Else

Set MyDatabase = Workspaces(0)OpenDatabase(AppPath & "\save")

Set Myrs = MyDatabaseOpenRecordset("select from user")

If MyrsEOF = False Then MyrsMoveLast

If MyrsBOF = False Then MyrsMoveFirst

Dim i As Integer

Dim ShowIndex As Integer

For i = 0 To MyrsRecordCount - 1

CboNameAddItem (MyrsFields("Name"))

If MyrsFields("Run") = "1" Then ShowIndex = i

MyrsMoveNext

Next

If CboNameListCount > 0 Then

CboNameListIndex = ShowIndex

Else

ChkNewValue = 2

End If

MyrsClose

MyDatabaseClose

End If

TxtPasswordSetFocus

End Sub

Private Function CheckStr(StrTheword As String) As Boolean

Dim i As Integer

For i = 1 To Len(StrRule)

If InStr(1, StrTheword, Mid(StrRule, i, 1)) <> 0 Then '含有这样的字符

CheckStr = True

Exit Function

End If

Next

CheckStr = False

End Function

'你要源文件可以发EMail给我索要

'我的电邮地址是:wangaochao@163com

先取得登录页面的用户名跟密码!

再用

SQL语句

进行查询!

select

form

表名

where

数据库中的用户名字段=取得登录页面的用户名

select

form

表名

where

数据库中的密码字段=取得登录页面的密码

再把这两个SQL语句传过去!

用COMMAND的ExecuteNonQuery方法执行!得到一个数!再进行判断

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

using SystemDataSqlClient;

using SystemData;

namespace MyKTV

{

class DBHelper

{

private string connstr = stringFormat("Data Source=服务器名;Initial Catalog=MyKTV(数据库名);User ID=用户名;Pwd=密码");//如果是windows登陆就写(Integrated Security=True),服务器名本机可用()点,没有密码Pwd可以不写,

private SqlConnection connection;

public SqlConnection Connection

{

get

{

if (connection == null)

{

connection = new SqlConnection(connstr);

}

return connection;

}

}

public void OpenConnection()

{

if (ConnectionState == ConnectionStateClosed)

{

ConnectionOpen();

}

else if (ConnectionState == ConnectionStateBroken)

{

ConnectionClose();

ConnectionOpen();

}

}

public void CloseConnection()

{

if (ConnectionState == ConnectionStateOpen || ConnectionState == ConnectionStateBroken)

{

ConnectionClose();

}

}

}

}

一、类文件的编写及使用。

可以单独建立一个类文件(使用记事本),然后包含在项目中,使用时加上该类的命名空间,就可以使用这个类了。

如何在一个项目里包含一个类文件?

1在项目里新建一个文件夹;

2将类文件放在这个文件夹里;

3在vs界面的解决方案资源管理器里,点击“显示全部文件”按钮,然后选中这些文件,右击—>”包含在项目里”;

4在项目的其他地方引用命名空间后,就可以使用这些类了。

二、登录窗口的制作

我们可以借助一个类文件生成器(Code Smith),帮助我们制作需要的类,下面的是使用Code Smith连接数据库的表后,根据模板生成的类。

点击登陆

//点击登陆按钮privatevoid button1_Click(object sender, EventArgs e)

{

string userName = textUserText;

string PWD = textPWDText;

//调用方法,访问数据库,核对数据

LoginData data= new LoginDA()Select(userName ,PWD);

//如果访问到数据,d出主窗口if (data != null)

{

Main f = new Main();

fShow();

}

else

{

MessageBoxShow("登录失败");

}

}

三、捕获异常

这是一个类文件里的查询数据方法,

把可能出现问题的步骤放在try里面,如果有异常(比如,连接数据库出现网络问题),进入catch,我们可以选择抛出此异常或其他 *** 作。finally里面是不受异常影响,总是执行的

以上就是关于如何用delphi连接数据库做一个登陆界面全部的内容,包括:如何用delphi连接数据库做一个登陆界面、C#做登录界面如何连接oracle数据库、vb登陆,连接数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9395853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存