生命无常
如果没有明天

做语法检查时要能连得上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

posted on 2006-03-02 14:43  John  阅读(2084)  评论(0)    收藏  举报