做語法檢查時要能連得上SQLServer,然後程序如下:
Private Function CheckSQL(ByVal SQLs As String) As String
On Error GoTo errHandle
conTADO.Execute ("SET PARSEONLY ON " & SQLs)
CheckSQL = "語法檢查通過。"
conTADO.Execute ("SET PARSEONLY OFF")
Exit Function
errHandle:
CheckSQL = Err.Description
conTADO.Execute ("SET PARSEONLY OFF")
End Function
其中conTADO是一個已連接好的ADO的Connection對象。
關鍵在於
SET PARSEONLY ON 和 SET PARSEONLY OFF,
執行了SET PARSEONLY ON 後,再執行的SQL語句,不會真的執行,只是預執行一下,有錯誤就會返回,完了以後再執行SET PARSEONLY OFF,數據庫就會恢復原態。
這一種更好一點
USE pubs
GO
PRINT 'Valid query'
GO
-- SET NOEXEC to ON.
SET NOEXEC ON
GO
-- Inner join.
SELECT a.au_lname, a.au_fname, t.title
FROM authors a
INNER JOIN titleauthor ta
ON a.au_id = ta.au_id
INNER JOIN titles t
ON ta.title_id = t.title_id
GO
-- SET NOEXEC to OFF.
SET NOEXEC OFF
GO
PRINT 'Invalid object name'
GO