gpt4 book ai didi

java - 将字符串值传递给 SQL bigint 列

转载 作者:行者123 更新时间:2023-12-01 15:28:20 25 4
gpt4 key购买 nike

给出以下声明:

 String query = "Select * from T_spareParts where SparePartPK IN (? )"

在我的 BackBean (JSF 2) 中,我首先迭代表中的所有汽车,并构建当前选定的所有汽车的字符串(通过选择每个汽车 ID 作为主键),因此之前的最终字符串传递给 SQL 可能如下所示:

String finalString = " '1','2','3','4'";

然后:

this.prepareStatement= this.connection.prepareStatement(query);
this.prepareStatement.setString(1,finalString);
this.prepareStatement.executeQuery();

抛出的异常是:

Error converting data type nvarchar to bigint.

现在我的理解是,异常是由于 SparePartPK 的类型为 bigint 并且我们传递了一个 String 。

但是在 SQL Server (2008) 中我可以做到:

 Select * from T_spareParts where SparePartPK IN ('1','2','3','4')"

按预期返回结果。为什么我会收到异常以及如何纠正该问题? (如果这不是最好的方法,也请随时发表评论)

更新:

我还尝试生成不带单引号的 finalString ,这会导致抛出相同的异常:

String finalString = " 1,2,3,4";

最佳答案

您应该将数字放入数组(而不是字符串)中,并使用preparedStatement.setArray()

关于java - 将字符串值传递给 SQL bigint 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com