2016-02-04 78 views
1

如果从Access SQL查询中找到的结果字段为空,则以下函数将引发异常。Access SQL查询返回空白记录时防止出现异常

如果查询变成空的,我只想retvalue =无,但我得到一个错误,说我不能给一个字符串赋一个空值。所以我把它放在一个catch中,但catch会滞后于应用程序,因为这个函数经常被使用,并且查询结果通常是空的。

一个例子的情况是:

checkRecord(“注释”,“表1”,“名”,“史蒂夫”)

该函数返回备注字段的记录与头名表1中的“Steve”的值。如果Steve的笔记是空的(他们通常是),则该函数将抛出关于将字符串转换为空的异常。

我该如何声明retvalue =无,如果返回的数据库记录是空的,而不必做一个捕获?

Public Shared Function CheckRecord(Table As String, refcol As String, refcolvalue As String, targetcol As String) 


     Dim retvalue As String 

     Using cn As New OleDbConnection(mystr) 
      cn.Open() 
      Dim custCMDcr As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT [" & targetcol & "] FROM [" & Table & "] WHERE [" & refcol & "] =" & refcolvalue) 


      custCMDcr.Connection = cn 



      Try 
      retvalue = CType(custCMDcr.ExecuteScalar(), String).ToString 

      Catch fail As Exception 
       retvalue = Nothing 
      End Try 



      Return retvalue 



     End Using 





    End Function 
+0

使用IsDbNull测试返回值 – Plutonix

回答

0

使用isDBNULL测试结果的工作,谢谢!

If IsDBNull(custCMDcr.ExecuteScalar()) Then 
    retvalue = Nothing 
else 
    (rest of code) 
end if