我正在尝试编写一个小函数来获取一个id u(整数),并且返回您拥有距离的朋友的数量< = 3(朋友信息存储在表赞 :喜欢(uid1,uid2)表示:uid1喜欢uid2)。
我写了这个简单的查询:PreparedStatement的JDBC错误
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,如之前提到的,是传递给函数的整数。
所有这些代码都在'尝试'区块内。当我尝试运行它时,它会打印第一个打印输出(“2”),但不打印第二个(“3”),并且收到以下异常消息:
列索引超出范围:3,列数:2.
为什么它是这样的,我该如何改变它的工作,因为我想?
非常感谢。
谢谢!复制粘贴错误.. – limlim