文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何截获数据库操作时来自服务器的错误返回码

如何截获数据库操作时来自服务器的错误返回码

时间:2010-10-12  来源:梦在贝加尔湖

 问题内容:如何截获数据库操作时来自服务器的错误返回码

  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=989972
  • 所属论坛:数据库(包含打印,安装,报表)     审核组:VB
  • 提问者:bluetide     解决者:
  • 感谢:acptvb
  • 关键字:VB 数据库 SQL 变量 语句 数据库(包含打印,安装,报表) http 错误 sub library 截获 vbcr
  • 答案:

    数据库用的是SQL Sever2000里的Pub例子数据库,使用Adodc何Datagrid控件,
    操作1:对employee表作添加新纪录的操作,由于表employee是以emp_id做做主键的,那么,当我添加一个已经存在的主键纪录时,SQL Server一定会返回一个错误代码给我,告诉我出错,那么我如何写码才能使这个错误有我来处理后返回一个合适的信息给用户而不是突兀的弹出一个类似编译错的对话框
    操作2:对jobs表作删除操作,由于jobs表的job_id时employee表的外键,我在删除jobs表的某条纪录正好触犯了外键约束的条件,于是同样会有错误对话框弹出,我的问题仍然是如何截获它

      我想问的就是如何在VB代码里截获SQL Server地返回错误码(VC可以用Try,VB呢),并根据错误码的值作相应操作(哪里有这些错误码的详细说明),我是VB新手,望大虾指教,不胜感激!!!
    --------------------------------------------------------------- 感谢您使用微软产品。

    您可以在ADODB.Connection 的ExecuteComplete事件发生时判断SQL语句是否执行成功的信息,并获取错误信息。如果此时不对错误进行处理,将发生Rum-time Error,您可以使用On Error Statement来处理错误,防止程序的崩溃。

    如果SQL语句的执行没有错误,ADO.connection对象的execute方法的第二个参数是存储返回值的变量,反映了受影响的记录个数,您可以通过这个参数变量获得SQL语句执行结果的信息。如下例:

    Private WithEvents cases As ADODB.Connection   ‘为了获取对象的事件,需在声明对象时加WithEvents关键字。

    Private Sub cases_ExecuteComplete(ByVal RecordsAffected As Long, _
    ByVal pError As ADODB.Error, _
    adStatus As ADODB.EventStatusEnum, _
     ByVal pCommand As ADODB.Command, _
    ByVal pRecordset As ADODB.Recordset, _
     ByVal pConnection As ADODB.Connection)
    If adStatus = adStatusErrorsOccurred Then
           MsgBox pError.Description
    Else
         MsgBox "exec success"
    End If
    End Sub

    Private Sub Command2_Click()
        Set cases = CreateObject("ADODB.Connection")
        cases.Open ("testdb1")    
        Dim num As Integer    
        exsql = "delete from Table1 where ID>0"    
        On Error GoTo errl    
        cases.Execute exsql, num    
        Text2.Text = num    
        Exit Sub
        
    errl:    
        MsgBox Err.Description    
        Exit Sub

    End Sub

    每次执行与ADO有关的操作时,所有provider errors都被加入connection的Errors属性,您也可以由此获得错误信息。修改on error的处理代码如下:
    errl:    
        For Each Err In cases.Errors
          
          strError = "Error #" & Err.Number & vbCr & _
             "   " & Err.Description & vbCr & _
             "   (Source: " & Err.Source & ")" & vbCr & _
             "   (SQL State: " & Err.SQLState & ")" & vbCr & _
             "   (NativeError: " & Err.NativeError & ")" & vbCr
          If Err.HelpFile = "" Then
             strError = strError & "   No Help file available"
          Else
             strError = strError & _
                "   (HelpFile: " & Err.HelpFile & ")" & vbCr & _
                "   (HelpContext: " & Err.HelpContext & ")" & _
                vbCr & vbCr
          End If
             
          Debug.Print strError
       Next
       Exit Sub

    详细信息请参考:
    Execute Method (ADO Connection)
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcnnexecute.asp
    ExecuteComplete Event
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdevtexecutecomplete.asp
    On Error Statement
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vastmonerror.asp
    Errors Collection
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcolerrors.asp
    Description, HelpContext, HelpFile, NativeError, Number, Source, and SQLState Properties Example (VB)
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdprodescriptionx.asp


    -  微软全球技术中心 VB技术支持
    本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

  • 相关阅读 更多 +
    排行榜 更多 +
    辰域智控app

    辰域智控app

    系统工具 下载
    网医联盟app

    网医联盟app

    运动健身 下载
    汇丰汇选App

    汇丰汇选App

    金融理财 下载