判断字符串是否是SQL Server数据库的保留字(关键字)

therry_ding 2014-06-30 02:29:04
需要实现一个功能,该功能要求判断某个字符串是否是SQL SERVER/MySql/Access数据库的保留字(关键字)?由于数据库的保留字(关键字)很多,而且版本不同可能对于的保留字(关键字)也不同,所以希望找到系统提供的相关方法。
...全文
461 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
therry_ding 2014-07-04
  • 打赏
  • 举报
回复
感谢各位,问题已解决,结贴。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
有道理,看来得想想其他办法了。不知道其他高手还有没有什么好办法,在等等看。
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 12 楼 therry_ding 的回复:
用户只能修改表名和列名,其它的是不能操作的,所以要对他们输入的表名和列名进行判断。是啊,就是想利用“数据库客户端里保存了关键字”来判定用户输入的字符串是否是关键字啊。其实我也找了很多资料,没有找到直接调用的办法,所以才想到来论坛上问问。
就算你能直接调客户端的功能,也不是每台客户机都安装了客户端啊. 有些电脑安装个精简版的客户端就可以通过程序访问数据库了(其实就类似注册了个DLL),根本连个界面都没有. 还有用WEBSERVICE连数据库的,连客户端都可以没有...
凤凰涅檠 2014-06-30
  • 打赏
  • 举报
回复
枚举啊。。。。。。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
用户只能修改表名和列名,其它的是不能操作的,所以要对他们输入的表名和列名进行判断。是啊,就是想利用“数据库客户端里保存了关键字”来判定用户输入的字符串是否是关键字啊。其实我也找了很多资料,没有找到直接调用的办法,所以才想到来论坛上问问。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
用户肯定是不愿意学的,至于加[]倒是一个办法。没有用过MySql,不知道MySql数据库能不能也用这种办法。最好是用现有的办法,因为还涉及到其它的内容。
於黾 2014-06-30
  • 打赏
  • 举报
回复
程序连接数据库,不管用的哪种方式,也只是引入了一个DLL,里面有各种对数据库的操作函数 不管引入的是什么DLL,它毕竟不是客户端,没有那种方法让你直接用.
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 6 楼 therry_ding 的回复:
我猜想应该有现成的方法可用,比如SQL Server Management ,它能识别所有的关键字并标出颜色,不知道能不能调用这些方法。
那是数据库客户端里保存了关键字,所以才能识别出来,而不是当你查询数据库的时候才知道到底哪些是关键字. 好比VS也能识别int,if,else这些,并标成蓝色.不代表你程序能够直接使用编译器内部方法.
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 4 楼 therry_ding 的回复:
非也,数据库要用户自己设计,所以要判断,不然数据库创建会出问题。题外话:看你的图像想起一个人,演红孩儿的那个演员好像也是做IT的,不会就是你吧,呵呵。
数据库用户自己设计,然后通过你的软件来创建表? 既然是通过你的软件来创建表,你就不要让他们自己拼接SQL语句了,根据他们选择的内容拼接个SQL语句不就行了... 另:如果用户可以直接对数据库操作,你这都是在做无用功...
exception92 2014-06-30
  • 打赏
  • 举报
回复
从根源解决问题,培训用户一些基础的sql知识,避免关键字的输入。 再者,你所说的 “某个字符串”,指的是字段,你会根据用户创建的字段来拼接sql语句 每次拼接的时候都加上 "[字段]" ,其实这是比较规范的sql语法。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
我猜想应该有现成的方法可用,比如SQL Server Management ,它能识别所有的关键字并标出颜色,不知道能不能调用这些方法。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
3楼的办法是可行的,但是,后期维护比较烦,而且担心会漏掉某项,那样发布以后查问题比较麻烦。
therry_ding 2014-06-30
  • 打赏
  • 举报
回复
非也,数据库要用户自己设计,所以要判断,不然数据库创建会出问题。题外话:看你的图像想起一个人,演红孩儿的那个演员好像也是做IT的,不会就是你吧,呵呵。
lich2005 2014-06-30
  • 打赏
  • 举报
回复
可以在MSDN先把关键字都找全。 http://msdn.microsoft.com/zh-cn/library/ms189822.aspx 然后在把这些关键字做成一张表。比如下面这种表 关键字 软件 版本 -------------------- AS sqlserver 2000 AS sqlserver 2005 AS sqlserver 2008 AS sqlserver 2012 in sqlserver 2000 in sqlserver 2005 select mysql .. 可以通过这张字典就能查到 AS 关键字,对应 sql2000,sql2005,sql2008,sql2012版本 in 关键字,对应 sql2000,sql2005 不知能解决楼主的问题没?
於黾 2014-06-30
  • 打赏
  • 举报
回复
我猜你想自己做个WEBSERVICE,直接执行客户端发来的SQL语句? 然后要判断SQL语句是否允许执行?
Hacker_Dad 2014-06-30
  • 打赏
  • 举报
回复
等待大神级回答

110,535

社区成员

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

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

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