【VB】学生信息管理系统问题总结
生活随笔
收集整理的這篇文章主要介紹了
【VB】学生信息管理系统问题总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學生信息管理系統的調試中,我遇到的問題如下。
一、SQL注入。
進入管理系統時,相信大家都會遇到SQL注入問題。
在用戶名前面加上一個 '? ,就會提示錯誤,這個錯誤就是SQL注入。我是這樣解決的。參考ASCII碼表
這樣,我就限制了用戶名只能輸入數字,大小寫字母和刪除鍵,其他輸入均被視為無效輸入。
同樣,在限制用戶輸入類型時,比如班號只允許輸入數字,同樣可以用這個辦法。
二、密碼修改優(yōu)化。
在修改密碼界面,我們發(fā)現只要是進了系統,任何人都可以隨意修改密碼,非常不安全,于是,我進行了如下修改。添加了密碼驗證。
If Trim(txtPassword1.Text)<>Trim(txtPassword2.Text) Then <span style="white-space:pre"> </span>修改密碼 Else <span style="white-space:pre"> </span>msgbox"原密碼錯誤,請重新輸入!,"vbOkOnly+vbexclamation,"警告" End If然后在Form Load中顯示登錄的用戶名。
Private Sub Form_Load()Dim txtSQL, MsgText As String'定義變量Dim mrc As ADODB.Recordset Dim name As StringtxtPassword0.Text = ""txtPassword1.Text = ""txtPassword2.Text = ""txtSQL = "select * from user_Info where user_ID = '" & UserName & "'" '連接數據庫Set mrc = ExecuteSQL(txtSQL, MsgText) '調用自定義函數name = Trim(mrc.Fields(0)) 'name賦值Label4.Caption = "當前用戶名為:" & name '顯示復制內容 End Sub 經過這樣的修改后,修改密碼界面可以顯示當前用戶名,需要驗證原密碼。三、出生日期晚于入學日期。 在添加學籍的時候,如果你的出生日期晚于入學日期是可以添加成功的,但這在現實中是不允許的。于是我用了如下兩種方法。 方法1:? Dim borndate As Date Dim getdate As Date'定義變量 borndate =Trim(txtBorndate.Text) getdate =Trim(txtRudate.Text) If getdate<=borndate then'進行比較MsgBox"入學時間不能早于出生時間,請重新輸入",vbOKOnly + vbInformation,"警告"txtRudate.SetFocusExit Sub End If 方法2: Dim a As Integer a = DateDiff("d", txtRudate.Text, txtBorndate.Text) If a > 0 Then MsgBox "出生日期應早于入校日期!!請修改……", vbOKOnly, "警告"Exit SubtxtRudate.Text = ""txtRudate.SetFocus Else ?但是,在加入了這樣的代碼后,會衍生出另外一個問題,錯誤13,類型不匹配。 經過反復調試,我認為這是因為新加的代碼與原代碼沖突,新加代碼使日期類型發(fā)生改變,致使下面的原代碼類型不吻合,無法正常運行,我也沒什么更好的解決辦法,就加了一個 on error goto 語句來跳轉了這個錯誤。算是投機取巧吧。
四、查詢表顯示不完全。 兩個查詢表中,myFlexgrid中字體總是顯示不完全,這讓用戶體驗非常不好。于是。 首先修改myFlexgrid屬性: 通用》行調整模式(Z)》3—Both 接下來在模塊中敲下如下代碼: Public Sub AutocolWidth(Form As Form, Grid As MSHFlexGrid) '同一窗體和控件文字大小 Dim FontSize As Integer FontSize = Form.FontSize Form.FontSize = Grid.Font.SizeDim RowNum As Long, ColNum As Long, ColWidth As Double With Grid '遍歷每一列For ColNum = 0 To .Cols - 1ColWidth = 0'遍歷每一行,找到最長文本For RowNum = 0 To .Rows - 1If Form.TextWidth(.TextMatrix(RowNum, ColNum)) > ColWidth ThenColWidth = Form.TextWidth(.TextMatrix(RowNum, ColNum))End IfNext'在最長文本長度的基礎上增加長度90緹.ColWidth(ColNum) = ColWidth + 150Next End With Form.FontSize = FontSize End Sub 接下來在窗體中敲 AutocolWidth Me, myFlexgrid '使表格適應文字長度 這樣,myFlexgrid表格就會隨著文本的大小而改變自身大小。
五、課程重復導入問題。 代碼如下: Private Sub cmdAdd_Click()If listallcourse.ListIndex <> -1 ThenCall addlist(listselectcourse, listallcourse.list(listallcourse.ListIndex))End If End Sub Private Function addlist(list As ListBox, str As String) As Boolean '只允許單次添加Dim i As LongFor i = 0 To list.ListCount - 1If list.list(i) = str ThenExit FunctionEnd IfNextlist.AddItem straddlist = True End Function
六、溢出問題。 我遇到的溢出有時間溢出和字符串溢出。 字符串溢出: 首先我們設置一下text的MaxLength屬性,讓它和數據庫中允許最大長度相同就可以了,如果是手機號,還需要修改數據庫中的最大長度值。 ? 時間溢出: 時間溢出指的是輸入的年份在1753年之前,超出datatime范圍,就會出現實時錯誤6。 解決方法如下: If DateDiff("d",CDdate(txtBorndate.Text),"1753-01-01">0 ThenMsgBox "出生日期請輸入1753年以后的年份!",vbOKOnly + vbExclamation,"警告"txtBorndate.SetFocus exit Sub
七、錯誤3021、3001、91。
3021錯誤主要是因為EOF和BOF的問題,當數據庫中無數據時,再次執(zhí)行這個代碼就會出現錯誤,因為兩個指針指到了同一個地方,? 這是不允許的,我的解決方法也是加了一個 on error goto? 語句,出現msgbox使之提示“無數據!”。
對于錯誤3001和91大多是因為代碼問題,細心點就不會出錯,當然,91還可能是數據庫連接方面出的問題。 八、總結。 學會站在巨人的肩膀上學習,通過敲學生信息管理系統,培養(yǎng)了我們的調錯能力,通過看其他人的博客,增長了我們的知識,加深了我們對數據庫的認識。使我們向VB海洋的更深處遨游。
總結
以上是生活随笔為你收集整理的【VB】学生信息管理系统问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐三款格式转换软件轻松转换3gp格式
- 下一篇: windows克隆账户