我对MYSQL很熟悉。现在,尝试在IBM SQL DB(DB2)上进行查询: "从HOMEBASEDAPP.LOGINDB中选择displayname,其中username ='" +用户名+"'和密码='" +密码+"';"
这是我运行查询时遇到的错误。
发生错误[IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0206N" USERNAME"在使用它的上下文中无效。 SQLSTATE = 42703
我附上了我的表格外观的截图:
答案 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