如何通过SQL的Object来验证SQL的语法是否正确?

JavaK 2006-11-20 12:07:16
如何通过SQL的Object来验证SQL的语法是否正确?

是SQLDMO的哪个属性或是方法吗?
...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaK 2006-11-21
  • 打赏
  • 举报
回复
当然,用SET PARSEONLY ON 也有好处就是不必要去理会MSSQL Server的问题了,也简单,用SQLMDO就要考虑一下你是否安装了MSSQL Server的问题了。
JavaK 2006-11-21
  • 打赏
  • 举报
回复
to winner2050(winner):
在你的SQL Statement的前面加上 SET PARSEONLY ON ,然后像平常一样在程序里执行(放心,它不会真的执行的,只是检查语法)这条SQL,如果有错误就是语法错误,不就可以了?你查一下SQL Help Online就知道了,加上这个后你的SQL只会做验证语法处理(当然也不会去检查你的表啊,字段之类的),不会执行的。你可以在SQL Query Analyzer中试一下如:写一个错误的SQL(table1不存在):select * from table1,你执行会报错,但是你加上Set Parseonly on在前面就不会了。其实还有用SQLMDO object的里面的接口来实现的,但是我忘了,现在也找不到了。我想如果能找到后面的方法,我觉得更好,那样就不必须利用System.Data之类的了,只要用SQLMDO object就可以做到,更方便简洁代码更容易让人理解。大伙去找后面的吧,一定有的。找到了就在这里告诉俺一声!谢了!
liujia_0421 2006-11-20
  • 打赏
  • 举报
回复
有意思....
JavaK 2006-11-20
  • 打赏
  • 举报
回复
我说的是如何用程序来调用MSSQL的Object来达到SQL Query Analyzer中的检测语法的功能,只是检测语法,不验证其字段等。(也不用试着执行的方法然后捕捉错误来做)各位知道的就麻烦不吝赐教啊!先谢了!
winner2050 2006-11-20
  • 打赏
  • 举报
回复
JavaK()
说说看你怎么用的??

我也在寻找比较简便的方法呢。
james_hunter 2006-11-20
  • 打赏
  • 举报
回复
好办法……你是怎么找到的?
JavaK 2006-11-20
  • 打赏
  • 举报
回复
我知道了另一种方法了,不用SQLMDO Object ,
SET PARSEONLY ON ,哈哈~~
JavaK 2006-11-20
  • 打赏
  • 举报
回复
呵呵,我以前看过,其实MSSQL中是有这个接口的,没有这么麻烦的。我忘了,现在找不到了,无从找起。
james_hunter 2006-11-20
  • 打赏
  • 举报
回复
Hello,

I'm working on a server-side application that dynamically builds complex SQL queries, which take painfully long to execute for testing.

Thus, I jumped to the idea in the post script of Chapter 10.2 to use PrepareStatement to just verify correctness of the SQL commands.

I found out that this approach is limited to the database environment, i.e. if the JDBC driver supports precompilation of prepared statements on the server-side before executing the commmand.

It seems that pure-Java JDBC-drivers don't support this feature. I tried PostgreSQL-JDBC and the pure-Java DB2 driver. They don't support it.

In contrast, the so-called "app-driver" of DB2-JDBC (COM.ibm.db2.jdbc.app.DB2Driver) supports it. But only, if you set DEFERREDPREPARE to 0 in the local db2cli.ini.

Since the RDMS of our application is DB2, I can use this technique. Which is a big improvement as to testing the correctness of SQL.


Christof
---------------------------------------------------------------------
http://www.manning-sandbox.com/thread.jspa?messageID=35383


按这位老大说的,用PrepareStatement 也可以验证语法,不过我没试过。下边回复的哥哥的建议也挺好。呵呵
JavaK 2006-11-20
  • 打赏
  • 举报
回复
是楼上所说的,我也在网上搜索了一下没找着!
james_hunter 2006-11-20
  • 打赏
  • 举报
回复
我猜楼主是想要SQL server Management studio中验证语法那个功能的接口,不过可惜,我找了很久也没找到。
james_hunter 2006-11-20
  • 打赏
  • 举报
回复
http://book.csdn.net/bookfiles/153/1001536555.shtml
另外,如果是存储过程中验证,SET_SHOWPLAN_ALL也是比较好的方法。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧