org.postgresql.util.PSQLException - 2019
org.postgresql.util.PSQLException - 2019
我正在尝试通过 Cucumber(Java) 自动化我的 API 和数据库测试 (postgresql)。
我是如何编写代码并尝试执行以下查询的:
resultSet=statement.executeQuery("select * from rules_data.postcode_leadtime where postcode = "+postcodedistrict.toUpperCase()+" and order_type = "+ordertype.toUpperCase()+"");
现在,如果我 运行 直接查询即 -
select *
from rules_data.postcode_leadtime
where postcode = 'MK9'
and order_type = 'ADSI'
它 运行 非常好,但是当我 运行 上面的带有参数的查询时,它给出了以下错误:
org.postgresql.util.PSQLException: ERROR: column "mk9" does not exist
我用谷歌搜索了一下,发现执行命令时它必须是大写字母,所以我确保它被转换为大写字母,正如你在上面查询的参数中看到的那样,但我仍然我遇到了同样的问题。也发生在我的其他命令中。
注意:我试过打印参数值,它们都是大写的。
我遇到的另一个问题是以下查询:
resultSet=statement.executeQuery("select day from rules_data.hub_workdays where hub_id = " + hub + " and available = 'N'");
这里的 hub 是一个整数值,它在打印时很好,但是通过 Java 执行时会出现以下错误:
org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying = integer
但是当我 运行 有值时它工作正常。
select day
from rules_data.hub_workdays
where hub_id = '593'
and available = 'N'
我第一次解释的时候已经提到了
你真的应该像评论中写的那样使用 PreparedStatement
,但你的错误可以通过以下修复消失:
resultSet=statement.executeQuery("select * from rules_data.postcode_leadtime
where postcode = '"+postcodedistrict.toUpperCase()+"'
and order_type = '"+ordertype.toUpperCase()+"'");
基本上你需要加单引号让参数变成strings
我正在尝试通过 Cucumber(Java) 自动化我的 API 和数据库测试 (postgresql)。 我是如何编写代码并尝试执行以下查询的:
resultSet=statement.executeQuery("select * from rules_data.postcode_leadtime where postcode = "+postcodedistrict.toUpperCase()+" and order_type = "+ordertype.toUpperCase()+"");
现在,如果我 运行 直接查询即 -
select *
from rules_data.postcode_leadtime
where postcode = 'MK9'
and order_type = 'ADSI'
它 运行 非常好,但是当我 运行 上面的带有参数的查询时,它给出了以下错误:
org.postgresql.util.PSQLException: ERROR: column "mk9" does not exist
我用谷歌搜索了一下,发现执行命令时它必须是大写字母,所以我确保它被转换为大写字母,正如你在上面查询的参数中看到的那样,但我仍然我遇到了同样的问题。也发生在我的其他命令中。
注意:我试过打印参数值,它们都是大写的。
我遇到的另一个问题是以下查询:
resultSet=statement.executeQuery("select day from rules_data.hub_workdays where hub_id = " + hub + " and available = 'N'");
这里的 hub 是一个整数值,它在打印时很好,但是通过 Java 执行时会出现以下错误:
org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying = integer
但是当我 运行 有值时它工作正常。
select day
from rules_data.hub_workdays
where hub_id = '593'
and available = 'N'
我第一次解释的时候已经提到了
你真的应该像评论中写的那样使用 PreparedStatement
,但你的错误可以通过以下修复消失:
resultSet=statement.executeQuery("select * from rules_data.postcode_leadtime
where postcode = '"+postcodedistrict.toUpperCase()+"'
and order_type = '"+ordertype.toUpperCase()+"'");
基本上你需要加单引号让参数变成strings