选择DB2-SQL失败的查询

时间:2014-11-22 03:10:38

标签: sql db2 ibm-cloud

我对MYSQL很熟悉。现在,尝试在IBM SQL DB(DB2)上进行查询: "从HOMEBASEDAPP.LOGINDB中选择displayname,其中username ='" +用户名+"'和密码='" +密码+"';"

这是我运行查询时遇到的错误。

发生

错误[IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0206N" USERNAME"在使用它的上下文中无效。 SQLSTATE = 42703

我附上了我的表格外观的截图:DB Screenshot

2 个答案:

答案 0 :(得分:3)

您的查询失败,因为DB2期望默认情况下所有数据库对象都是大写的。这么多,它会在执行前自动将查询中的小写列名转换为大写。

由于您的列名称是小写的,因此此查询失败。

我的建议是将列名转换为大写,因为从长远来看,这将为您节省很多痛苦。

但是,只需将查询中的列名用双引号括起来,DB2就会保留正确的大小写,查询应该可以正常工作。

我相信这会奏效: SELECT "displayname" FROM HOMEBASEDAPP.LOGINDB WHERE \"username\" = '" + username +"' AND \"password\" = '" + password +"';"

注意:这里的查询非常不安全,并且可以对SQL注入攻击开放。希望您计划在应用程序中使用驱动程序,以便“准备”您的查询并提供简单地将值作为参数传递的方法。

答案 1 :(得分:0)

你需要修改你的sql脚本,否则在找到第一次出现的双引号时,db2会将它视为终止字符,我的意思是说查询将被执行到下面,这样你就会得到错误:

db2"从HOMEBASEDAPP.LOGINDB中选择displayname,其中username ='"

你需要处理双引号来解析完整的sql查询,下面的详细信息是一个示例参考链接:

http://www.justskins.com/forums/insert-with-double-quote-148522.html