0

我对MYSQL非常熟悉。现在,尝试在 IBM SQL DB(DB2) 上进行查询:“从 HOMEBASEDAPP.LOGINDB 中选择显示名称,其中用户名 = '”+ 用户名 +”' 和密码 = '”+ 密码 +“';”

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

发生错误 [IBM][CLI Driver][DB2/LINUXX8664] SQL0206N “USERNAME”在使用它的上下文中无效。SQLSTATE=42703

我附上了一张我的桌子的截图:数据库截图

4

2 回答 2

3

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

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

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

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

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

注意:您在此处的查询非常不安全,并且容易受到 SQL 注入攻击。希望您计划在您的应用程序中使用一个驱动程序,该驱动程序允许您“准备”您的查询并提供简单地将值作为参数传递的方法。

于 2014-11-22T05:31:50.450 回答
0

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

db2 "从 HOMEBASEDAPP.LOGINDB 中选择显示名称,其中用户名 = '"

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

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

于 2014-11-22T14:25:20.040 回答