gpt4 book ai didi

java - 与PreparedStatement有关的JDBC错误

转载 作者:行者123 更新时间:2023-12-02 09:39:40 24 4
gpt4 key购买 nike

我正在尝试编写一个小函数,该函数获取 id u(整数),并返回您距离 <=3 的好友数量(好友信息存储在表 Likes: Likes(uid1, uid2) 表示:uid1 喜欢 uid2)。
我写了这个简单的查询:

   String likesDistance = 
"SELECT uid2 " + //DISTANCE = 1
"FROM Likes " +
"WHERE uid1 = ? " +
"UNION " +
"SELECT L2.uid2 " + //DISTANCE = 2
"FROM Likes L1, Likes L2 " +
"WHERE L1.uid1 = ? and L1.uid2 = L2.uid1 " +
"UNION "+
"SELECT L3.uid2 " + //DISTANCE = 3
"FROM Likes L1, Likes L2 , Likes L3 " +
"WHERE L1.uid1 = ? and L1.uid2 = L2.uid1 and L2.uid2 = L3.uid1 ";

然后,我执行以下操作:

 PreparedStatement pstmt2 = con.prepareStatement(likesDistance);  
pstmt1.setInt(1, u);
pstmt1.setInt(2, u);
System.out.println("2");
pstmt1.setInt(3, u);
System.out.println("3");
pstmt1.setInt(4, u);
pstmt1.setInt(5, u);

其中 u,如前所述,是传递给函数的整数。
所有这些代码都在“try” block 内。当我尝试运行它时,它打印第一个打印输出(“2”),但不打印第二个打印输出(“3”),并且我收到以下异常消息:
列索引超出范围:3,列数:2。

为什么会这样,我该如何改变它以达到我想要的效果?

非常感谢。

最佳答案

复制并粘贴?我猜您想为语句 2 设置参数。

关于java - 与PreparedStatement有关的JDBC错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474629/

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