如何检测SQL语法是否正确?

amingo 2008-09-23 03:21:14
想做一个SQL语法检测的程序,检测需要包括select update delete,存储过程的创建、执行,表的创建、修改等,也就是基本上包含所有类型的SQL语句。

还有一点很重要,比如:select a from table1 这句语法没有问题,但如果table1中没有a字段,那也不会执行成功。
也就是说,不光是要语法正确还要判断是否能执行成功。

不知道该怎么做,请大家指点。

希望能有完美的解决方案~~
...全文
823 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
犀山居士 2012-05-17
  • 打赏
  • 举报
回复
楼主说的是想实现检查语法的工具,不是只想检查当前这条语句,有些人没有认真看题目
MSSQL里可以在语句前面加上
“reutrn ”,让连接执行,有错误就会报错误,并且会指出具体什么错误,但不会执行语句,可以达到验证语法的功能,如果要实现验证所有对象,我现在采用的是使用事务,执行完后再回滚事务,捕获异常,没有异常则说明语法和语句都没有问题,反之则有错误。
amingo 2008-09-23
  • 打赏
  • 举报
回复
知道了,结帖。
hangang7403 2008-09-23
  • 打赏
  • 举报
回复
帮顶
amingo 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 rainxy2000 的回复:]
在你的SQL语句前加入SET NOEXEC ON
在你的SQL语句后加入SET NOEXEC OFF
和普通的的SQL一样执行就行了,如果有错,会throw SQLException
[/Quote]

SET NOEXEC ON
SET NOEXEC OFF
是什么含义?
yagebu1983 2008-09-23
  • 打赏
  • 举报
回复
通过事务啊!!
qrh2008 2008-09-23
  • 打赏
  • 举报
回复
debug下看查询分析器 然后把语句复制到数据库编辑器 看啊
r_swordsman 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 rainxy2000 的回复:]
在你的SQL语句前加入SET NOEXEC ON
在你的SQL语句后加入SET NOEXEC OFF
和普通的的SQL一样执行就行了,如果有错,会throw SQLException
[/Quote]

ding
blue_maple 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lude8880 的回复:]
我編程都是一邊開這c#,一邊開數據庫,每個語句在數據庫上運行成功了才考到c#源碼里,至于自動的不太清楚
[/Quote]
同道中人wa
wdgphc 2008-09-23
  • 打赏
  • 举报
回复
用try/catch 我觉得是最简单的了.要不就在写代码前先确认一下.
rainxy2000 2008-09-23
  • 打赏
  • 举报
回复
在你的SQL语句前加入SET NOEXEC ON
在你的SQL语句后加入SET NOEXEC OFF
和普通的的SQL一样执行就行了,如果有错,会throw SQLException
wxg22526451 2008-09-23
  • 打赏
  • 举报
回复
不好实现。
SQLserver2008很强大了
amingo 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]
try{}catch{}
[/Quote]

只是检测 并不执行SQL的操作。

看了上面的回帖,CSDN的技术水平可能是实现不了的。
totsheng 2008-09-23
  • 打赏
  • 举报
回复
我做项目的时候都是先用查询分析器测试下SQL是否能够正常实现,然后再到VS做!
apu510064 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lude8880 的回复:]
我編程都是一邊開這c#,一邊開數據庫,每個語句在數據庫上運行成功了才考到c#源碼里,至于自動的不太清楚
[/Quote]
一样一样,当然程序也捕捉异常
JeffChung 2008-09-23
  • 打赏
  • 举报
回复
自己做个查询分析器
kbryant 2008-09-23
  • 打赏
  • 举报
回复
进来学习~
qqlpp 2008-09-23
  • 打赏
  • 举报
回复
查询分析器
鲁虾 2008-09-23
  • 打赏
  • 举报
回复
这个感觉得用到编译原理的咚咚了。
lude8880 2008-09-23
  • 打赏
  • 举报
回复
我編程都是一邊開這c#,一邊開數據庫,每個語句在數據庫上運行成功了才考到c#源碼里,至于自動的不太清楚
lude8880 2008-09-23
  • 打赏
  • 举报
回复
執行
加载更多回复(5)

110,561

社区成员

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

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

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