请参阅以下代码(代码源于网络):
varAlogo: 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登陆,连接数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)