HOW TO:优化这段代码?(登录窗体源码)
本人决定将毕业设计源码陆续公开,希望高手指点一二,比如代码优化、程序安全性等方面。
开发工具:VB.NET 2003+Access2003。
数据库文件名:x.mdb,密码:xxx。表Accounts有三列:UserName(主键),PassWd,Purview(数据类型:是/否);表Log有四列:UserName、DateTime(数据类型:日期/时间)、Operation、Category
启动对象:Module1
Module Module1
Friend Sub Main()
Dim Createnew As Boolean = False
Dim mtx As New Threading.Mutex(True, Application.ProductName, Createnew) '这句是别人教的,请高手解释一下具体含意
If Not Createnew Then
MessageBox.Show("程序已经启动!")
End
End If
Dim frmLogin As New Login
frmLogin.ShowDialog()
Dim frmMain As New Main
frmMain.ShowDialog()
End Sub
Friend User As String '程序使用者的用户名
Friend Admin As Boolean '程序使用者的权限
End Module
Login窗体中有Combobox1(用户名)、Textbox1(密码)、Button1(确定)、Button2(取消)
Imports System.Data.OleDb
Public Class Login
Inherits System.Windows.Forms.Form
'Windows窗体设计器生成的代码
Dim OleDbConnection1 As New OleDbConnection("Provider=Microsoft.Jet.oledb.4.0;data source=" & Application.StartupPath & "\x.mdb;Jet OLEDB:Database Password=xxx")
Dim OleDbDataAdapter1 As New OleDbDataAdapter
Dim DataSet1 As New DataSet("DataSet1")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = DataSet1.Tables(0).Rows(ComboBox1.SelectedIndex)("PassWd") Then
User = ComboBox1.Text
If DataSet1.Tables(0).Rows(ComboBox1.SelectedIndex)("Purview") = True Then Admin = True
Me.Close()
Else
Try
Dim Logging As New OleDbCommand("insert into Log values('" & ComboBox1.Text & "'," & Now.ToOADate & ",'以密码" & Chr(-24144) & TextBox1.Text & Chr(-24143) & "登录失败','登录/退出')", OleDbConnection1)
OleDbConnection1.Open()
Logging.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
OleDbConnection1.Close()
End Try
Static Times As Integer
If Times = 2 Then
MessageBox.Show("无法验证您的身份,程序将退出!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
End
End If
MessageBox.Show("密码错误请重试!您还有" & 2 - Times & "次机会...", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning)
Times += 1
TextBox1.Focus()
End If
End Sub
Private Sub FrmLgn_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Selecting As New OleDbCommand("select * from Accounts order by username asc", OleDbConnection1)
OleDbDataAdapter1.SelectCommand = Selecting
OleDbDataAdapter1.Fill(DataSet1, "Accounts")
ComboBox1.DataSource = DataSet1
ComboBox1.DisplayMember = "Accounts.UserName"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Login_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
If User = "" Then End
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
问题点数:20、回复次数:6Top
1 楼KissXYL(挚爱凝忆)回复于 2005-06-15 19:26:33 得分 6
太长了。你要优化哪部分。
Dim mtx As New Threading.Mutex(True, Application.ProductName, Createnew) '这句是别人教的,请高手解释一下具体含意
这句是避免重复创建线程的。别的太晕没看Top
2 楼ccghghgj(CSDN论坛小助手、验证码识别)回复于 2005-06-16 00:40:28 得分 4
当个例子看看还可以
做在项目里面就差远了
===================
本回复通过csdn助手发布
http://qqwwee.com/csdn.net
最后更新 2005.06.16Top
3 楼jonathonc(bachelor)回复于 2005-06-16 12:29:28 得分 0
回复人: KissXYL(挚爱凝忆)
太长了。你要优化哪部分。
===================
优化哪部分都行,只要觉得有更好的方法来实现相同的目的,敬请不吝赐教。Top
4 楼jonathonc(bachelor)回复于 2005-06-17 15:35:20 得分 0
自己用语言“将帐子提前”一下Top
5 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-06-17 15:54:00 得分 9
建议把数据连接和检索弄到类里面去或者组件中去操作。或者数据库连接字符串设置为全局的。其他的需要精简下!Top
6 楼pupo(泡泡)回复于 2005-06-17 17:31:17 得分 1
密码都绑到combo上去了,人家一实例化你这个窗体,谁的密码都知道了Top




