應用程式資料庫的唯一性限制式並在asp中捕捉資料庫的錯誤

來源:互聯網
上載者:User
    本文中所提到的asp頁面,除特別聲明外,均指<@PAGE LANGUEGE=”VBSCRIPT”>
    寫asp與資料庫的結合的程式時,經常會遇到同一資料表中不允許存在重複值的問題,比如使用者註冊程式中不允許出現相同的使用者ID。這樣的情況下,我以前採取的辦法是讀取資料庫中的已存在值,然後與使用者輸入的值比較,如果有相同,則提示已被註冊,須重新填寫。這樣做可以達到預期的目的,但是因為有一次額外的資料庫存取操作,比較浪費資源。
    我們都知道,資料表中的列可以設定唯一性限制式,就是從資料庫限制該欄位不允許出現重複值,違反唯一性限制式後,資料庫將返回2627錯誤,提示“違反了 %1! 約束 ''%2!''。不能在對象 ''%4!'' 中插入重複鍵”,這是資料庫的輸出,SQL Server 的所有錯誤都儲存在系統資料表 master.dbo.sysmessages 中。使用者定義的訊息也可以儲存在 sysmessages 中。在asp中調用預存程序的時候,由於預存程序沒有容錯處理,會返回該提示到頁面,並終止語句的執行,@@Error傳回值為0。如果版面設定了容錯,則不會出現錯誤提示,但因為錯誤是資料庫中出現的,所以Err.Number不能得到其錯誤號碼。(也可能是我的資料庫不熟的原因:-),還請大蝦指點)。近日研究ADO,找到了一種更加簡便的方式實現該控制。
    ADO(ActiveX Data Objects)被廣泛的用於應用程式與資料庫的串連,asp也可以通過他來實現對資料庫的操作的。ADO 2.1的Connection對象中有一個Error對象,通過它可以捕捉到來自資料庫的錯誤,以在asp頁面中控制。該對象常用的Property有如下幾個,均為唯讀:
    Description:字元型,返回來自資料庫的錯誤描述
    Source:字元型,錯誤來源
    SQLState:字元型,ODBC API(驅動程式管理器)錯誤,SQL Server 2000中對其有如下描述:
    SQLSTATE 返回的字串值由兩個字元的類值後接三個字元的子類值組成。類值 01 表明是一種警告,後跟隨 SQL_SUCCESS_WITH_INFO 的傳回碼。只要類值不是 01(IM 除外),則表明是一種錯誤,後跟隨 SQL_ERROR 的傳回碼。類 IM 專門用於表明從 ODBC 實現產生的警告和錯誤。任何類中子類值 000 均用於實現給定類中所定義條件。這種類值和子類值的分配方法由 SQL-92 定義。
    跑題了跑題了,回到剛才的話題~~~
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.