[转载]小议SQL语句构造(感觉值得思考的问题)
小议SQL语句构造
在切入正题之前,我想问大家一个问题:我们构造并用数据连接对象来执行的SQL语句本质究竟是什么?
如果您的答案是“仅仅是一个字符串”,那么恭喜您,因为您的能力已经不需要再看此文了。否则请往下看
这个SQL语句,确确实实只是一个普通的字符串常/变量,我们需要做的只是按照所使用的数据库SQL语法来组织这个字符串,然后传递给数据连接对象,让它根据这个字符串指定的操作内容去操作数据库
既然,它是一个字符串,那还需要对某些组合于其中的变量的类型耿耿于怀吗?
对于某些如:"select * from a where id=" & cint(id)的写法,真的感到既无奈又可笑。
还有就是刚才有个主题里说的,时间该怎么写进SQL语句里,提议用Cdate转换类型等等之类可笑举动的大有人在。。。唉。难道他们不知道无论什么类型组合进SQL语句都得成字符串吗?
是不是日期不是你用VBScript的函数转换一下数据库就点头的。你得让它知道这是日期,例如ACCESS:你只需要用##界定它,数据库就知道它是日期了。
如果你的值是文本,你只需要加上单引号界定,数据库也知道了。莫非您还要cstr一下?
或许有的朋友说他用cint之类是为了防止非数值型的数据组合进来。
在此不得不对他说NO。千万不要再如此不友好地对待您的程序面对的人群了。如果您真的有心去排除非法的值,您尽可以在组合语句前先检查数据的合法性并作出友好的提示或操作。