我对MYSQL非常熟悉。现在,尝试在 IBM SQL DB(DB2) 上进行查询:“从 HOMEBASEDAPP.LOGINDB 中选择显示名称,其中用户名 = '”+ 用户名 +”' 和密码 = '”+ 密码 +“';”
这是我运行查询时遇到的错误。
发生错误 [IBM][CLI Driver][DB2/LINUXX8664] SQL0206N “USERNAME”在使用它的上下文中无效。SQLSTATE=42703
我附上了一张我的桌子的截图:
您的查询失败了,因为 DB2 期望所有数据库对象在默认情况下都是大写的。如此之多,它会在执行之前自动将查询中的小写列名转换为大写。
由于您的列名是小写的,因此此查询失败。
我的建议是将您的列名转换为大写,因为从长远来看,这将为您节省很多痛苦。
但是,只需将查询中的列名用双引号括起来,DB2 就会保留正确的大小写,并且查询应该可以工作。
我相信这会奏效:
SELECT "displayname" FROM HOMEBASEDAPP.LOGINDB WHERE \"username\" = '" + username +"' AND \"password\" = '" + password +"';"
注意:您在此处的查询非常不安全,并且容易受到 SQL 注入攻击。希望您计划在您的应用程序中使用一个驱动程序,该驱动程序允许您“准备”您的查询并提供简单地将值作为参数传递的方法。
你需要修改你的sql脚本,否则在找到第一次出现双引号时,db2会将其视为终止字符,我的意思是说查询将执行到下面,所以你会得到错误:
db2 "从 HOMEBASEDAPP.LOGINDB 中选择显示名称,其中用户名 = '"
您需要注意双引号来解析完整的 sql 查询,下面的详细信息是一个示例参考链接:
http://www.justskins.com/forums/insert-with-double-quote-148522.html