Java JDBC-Query不返回任何值
我尝试在java类上使用JDBC进行一个返回一系列简单结果的查询。查询只需要1个联接即可工作,但由于某些原因,它不返回任何值。但是,在Oracle SQL Developer上运行此查询时,将显示正确的结果。下面是我目前使用的代码 访问数据库 检索数据Java JDBC-Query不返回任何值,java,oracle,jdbc,Java,Oracle,Jdbc,我尝试在java类上使用JDBC进行一个返回一系列简单结果的查询。查询只需要1个联接即可工作,但由于某些原因,它不返回任何值。但是,在Oracle SQL Developer上运行此查询时,将显示正确的结果。下面是我目前使用的代码 访问数据库 检索数据 非常感谢您为解决此问题提供的任何帮助。从您发布的代码中,我看不到任何结果集的打印。 你怎么知道它什么也不退? 你能在while(rs.next)循环(if,计数器)之前/之后放一个print语句,看看它是否真的是空的吗? 如果为空,请尝试从查询中
非常感谢您为解决此问题提供的任何帮助。从您发布的代码中,我看不到任何结果集的打印。 你怎么知道它什么也不退? 你能在while(rs.next)循环(if,计数器)之前/之后放一个print语句,看看它是否真的是空的吗? 如果为空,请尝试从查询中删除表别名 编辑: 在“从房屋tbl中选择房屋id”中修改查询,执行查询并在
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
放
并立即注释掉/绕过打印代码。这是为了检查您的环境在该上下文中的基线可操作性。如果这不起作用,一定是数据库/驱动程序问题,对我来说如果您需要了解有关OP问题的更多详细信息,请将您的查询添加为注释而不是答案:)我编辑了上述代码,以向您展示我如何打印字符串以及结果。@Arkatos:谢谢您的提醒,我考虑过了。不幸的是,我不允许发表评论(需要声誉:50)。在这种情况下,你能告诉我怎么办吗?我试图根据问题的最后一句话“非常感谢为解决这一问题提供的任何帮助”来帮助回答这个问题,这句话“模糊地”将我的回答归类为“答案”。你认为呢?@ChrisGraves if System.out.println(allHouses.size())打印“0”(未显示)。我能说的是:检查您在Java中连接的数据库是否与SQL Developer的数据库相同(可能存在不同的类似实例?),并检查变量“rs”(非常常见的名称)没有被覆盖,实际上指向了正确的位置。我对不同的查询使用了相同的连接,所有这些都很好地工作。这是我唯一遇到麻烦的一个。
response.setContentType("application/json");
fullJsonString = "{";
fullJsonString += "\"houses\":[";
ArrayList<HouseObj> allHouses = new ArrayList<HouseObj>();
try {
while (rs.next()) {
int houseID = rs.getInt(1);
Struct address = (Struct) rs.getObject(2);
Object[] taskAddress = address.getAttributes();
String houseAddressStreet = taskAddress[0].toString();
String houseAddressTown = taskAddress[1].toString();
String houseAddressCounty = taskAddress[2].toString();
String houseAddressCountry = taskAddress[3].toString();
String houseAddressPostcode = taskAddress[4].toString();
String houseFullAddress = houseAddressStreet + ", "
+ houseAddressTown + ", " + houseAddressCounty
+ ", " + houseAddressCountry + ", "
+ houseAddressPostcode;
String type = rs.getString(3);
String status = rs.getString(4);
String landlord = rs.getString(5)+" "+rs.getString(6);
int price = rs.getInt(7);
HouseObj newClient = new HouseObj(houseID,
houseFullAddress, type, status, landlord, price);
allHouses.add(newClient);
}
System.out.println("Number Of Houses : "+allHouses.size());
for (int i = 0; i < allHouses.size(); i++) {
if (i == allHouses.size() - 1) {
fullJsonString += "{\"id\":\""
+ allHouses.get(i).getHouseId() + "\","
+ "\"address\":\""
+ allHouses.get(i).getAddress() + "\","
+ "\"type\":\""
+ allHouses.get(i).getType() + "\","
+ "\"status\":\""
+ allHouses.get(i).getStatus() + "\","
+ "\"landlord\":\""
+ allHouses.get(i).getLandlord() + "\","
+ "\"price\":\""
+ allHouses.get(i).getPrice() + "\"}";
} else {
fullJsonString += "{\"id\":\""
+ allHouses.get(i).getHouseId() + "\","
+ "\"address\":\""
+ allHouses.get(i).getAddress() + "\","
+ "\"type\":\""
+ allHouses.get(i).getType() + "\","
+ "\"status\":\""
+ allHouses.get(i).getStatus() + "\","
+ "\"landlord\":\""
+ allHouses.get(i).getLandlord() + "\","
+ "\"price\":\""
+ allHouses.get(i).getPrice() + "\"},";
}
}
fullJsonString += "]}";
} //Catch Exception Below
Number Of Houses : 0
{"houses":[]}
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
if (rs.next()){
System.out.println("Got house!");
}else{
System.out.println("No houses here!");
}