重構—使用者登入小結,重構小結

來源:互聯網
上載者:User

重構—使用者登入小結,重構小結

    重構開始師傅要求先實現登入的一條主線,然後在根據這個逐漸的去填充。這一階段遇到很多問題,這裡做一下小的總結。

1、API函數擷取使用者名稱

   擷取使用者名稱,是它在我們使用者登入期間都可以調用,像我們VB版的一樣還是用API函數來實現,在U層使用如下代碼:

</pre></p><pre name="code" class="vb"><span style="font-size:24px;">Public DeclareFunction GetUserName Lib "advapi32.dll" Alias"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long'API函數獲得使用者名稱</span>

2、視圖避免使用者異地登入

使用者登入的時候我們要驗證它是否在其他地方登入,這時候就是看我們自己建的表了,我的登入記錄表和使用者資訊表是分開的,由於我們要是分著查看很麻煩,可以使用視圖將兩個表需要的資訊串連起來很方便,視圖代碼如下:

<span style="font-size:24px;">create viewV_queryuserasselectUserNO,Level,Password,status from User1 join Worklog on user1.UserNO =Worklog.TeacherNO</span>

這樣我們就能用一個實體來返回兩個表的資訊了。

3、資料庫表自動添加時間

我們使用者登入的時候要在工作記錄表中添加一條工作記錄,雖然代碼也能實現,但是我們可以使用一種更簡單方便快速的方法,就是讓資料庫表自動添加時間,方法就是將表中記錄時間的欄位類型設定為date(或time)型,然後在“預設值或綁定”一欄添加函數getdate()即可。如所示:

 

注意:資料庫預設time(7),擷取時間日期,我們將其改為0就可以得到時間點了。

 

 

4、觸發器修改下機時間

當使用者退出時我們要在工作記錄中添加下機記錄,同樣時間也可以讓資料庫自動填寫,就是寫一個觸發器,觸發條件是使用者的狀態變為false(在工作表中有布爾值類型的欄位來表示使用者的狀態,正在工作為true),觸發器如下:

<span style="font-size:24px;">create triggertri_worklogonworklogafter insert,updateasdeclare @worklogidintselect @worklogid=(select id from inserted )beginif update(status)update WorklogsetOffTime=GETDATE(),OffDate =GETDATE ()where ID =@worklogidEND</span>

其中worklogid用來登入記錄號,修改的時候觸發器能知道要具體修改哪一條記錄。

(缺點:登入的時候下機時間和日期也自動添加了,現在還沒有解決,如果同志們有高見還請賜教~)

5、標識符重設

工作表我是用自動成長的id號來做標識符的,但是當刪除掉記錄再插入新的記錄會發現自動成長值是延續之前的值,而不是從1開始的,這時候我們可以執行如下來解決,建立查詢如下並執行:

一些小的問題就就這些,不當之處還要多多交流啊,其他方面還會陸續出版,大家敬請期待~~


 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.