当前位置: 首页 > 知识库问答 >
问题:

JOIN中的列名相同,在ResultSet中得到“column not Found”错误

宫高义
2023-03-14

我有三个表firlshippsupplier

String Query = "SELECT s.name Sname,s.city Scity,f.name Fname,f.city Fcity,"
        +"su.name Suname,su.city Sucity "
        +"FROM `order_details` ot "
        +"INNER JOIN `order` o ON ot.odr_id = o.odr_id " 
        +"INNER JOIN `product` p ON ot.pro_id = p.id "
        +"INNER JOIN `firm` f ON o.firm_id = f.id "
        +"INNER JOIN `shipp` s ON o.shipp_id = s.id "
        +"INNER JOIN `supplier` su ON o.sup_id = su.id ";

此查询在phpMyAdmin中工作。

但在javaresultset中给出“未找到列'sname'”。错误。

错误堆栈:

严重:空

请帮帮我!

提前道谢。

SELECT s.name Sname,s.city Scity ... other query part
SELECT s.name Sname,s.city Scity,f.name Fname,f.city Fcity,
       su.name Suname,su.city Sucity ... other query part
String firstColumn = "";
String secondColumn = "";

while(rs2.next()) {
    firstColumn = "Shipp to : ";
    firstColumn += rs2.getString("Sname") + rs2.getString("Scity") ;
    firstColumn += "Person : " + rs2.getString("Fname") +"+ "+ rs2.getString("Fcity");

    secondColumn = "Supplier : " + rs2.getString("Suname");
    secondColumn += rs2.getString("Suname");
    secondColumn += rs2.getString("Sucity");
}

共有1个答案

姬博瀚
2023-03-14

根据您的错误消息,我假设您正在使用最新连接器的MySQL

如果需要,您可以使用位置查询,这是使用可以找到元素的位置的编号,例如:

rs2.getString(1);

(是的,编号从1开始...)应该相当于这样(当然不存在大写问题):

rs2.getString("Sname");
Statement statement = ...;
String queryString = "SELECT s.name sname,s.city scity,f.name fname, f.city fcity, su.name suname, su.city sucity "
        +" FROM `order_details` ot "
        +" INNER JOIN `order` o ON ot.odr_id = o.odr_id "
        +" INNER JOIN `product` p ON ot.pro_id = p.id "
        +" INNER JOIN `firm` f ON o.firm_id = f.id "
        +" INNER JOIN `shipp` s ON o.shipp_id = s.id "
        +" INNER JOIN `supplier` su ON o.sup_id = su.id ";
ResultSet resultSet = statement.executeQuery(queryString);
ResultSetMetaData metaData = resultSet.getMetaData();
int colCount = metaData.getColumnCount();
if (resultSet.next()) {
    for (int i = 1; i <= colCount; i++) {
        System.out.println("Col(" + i + ") '" + metaData.getColumnName(i) + "' value:" + resultSet.getString(i));
    }
}else{
   System.out.println("No row found.");
}

这个片段将打印第一个结果,即您正在使用的驱动程序返回的列和值。

 类似资料:
  • 我有三个表,和。 所有三列的列名都与、、相同。。。另外 我在java中写了一个连接: 、和是join中使用的其他表。 此查询在phpMyAdmin中工作。 但是在java中,给出了没有找到列Sname.错误。 我尝试过以下解决方案,但这些方案对我不起作用: 1) 爪哇。sq.SQLException:未找到列 2)奇怪的SQL异常:未找到列 3) 很多其他人,但没有人工作 错误堆栈: JAVAsq

  • 除了去掉“D”之外,有没有办法。从第一个查询开始,使第一个代码段不抛出错误消息? 以下是源代码:

  • 问题内容: 我收到以下错误:org.postgresql.util.PSQLException:在此ResultSet中找不到列名usuario。 但是,我在适当的类中正确声明了以下usuario列! UsuariosGruposDAO.class UsuariosGrupos.class 错误出现在以下行: 我的List方法: 奇怪的是,当我分别测试我的列表时,数据表会显示适当的结果。但是,当我

  • 问题内容: 如果我有5位成员的得分如下 c的ZRANK返回2,d的ZRANK返回3 对于相同的分数,是否可以获得相同的排名? 示例:ZRANK c = 2,d = 2,e = 3 如果是,那么如何在spring-data-redis中实现呢? 问题答案: 任何实际的解决方案都需要满足要求,这是原始问题中所缺少的。我的第一个答案假设数据集很小,但是这种方法无法扩展,因为至少在O(N)中完成了密集排序

  • 我将ElasticSearch-5.2.1与springboot一起使用,并在ElasticSearch中获得以下错误。球棒 JAVAlang.IllegalStateException:从不受支持的版本[2.0.0]收到的消息最小兼容版本为:[5.0.0] 在我的应用程序控制台中,出现以下错误: 原因:org。弹性搜索。客户运输NoNoNodeAvailableException:没有配置的节点

  • 问题内容: 由于ResultSet包含从动态SQL返回的数据,是否有任何方法可以确定ResultSet是否包含特定的列名?例如,如果我运行但Column_ABC确实不存在,它将抛出异常。如何测试ResultSet是否可以从名为“ Column_ABC”的列中获取数据? 问题答案: 使用该类。 我不明白的是为什么会需要此功能。正在执行的查询或存储过程应具有已知结果。查询的列应该是已知的。需要这样的功