【问题标题】:Getting "The column name xxx is not valid" exception when trying to combine columns尝试合并列时出现“列名 xxx 无效”异常
【发布时间】:2010-09-03 14:48:57
【问题描述】:

我试图在 SQL 查询中合并两列,但在 java.sql.ResultSet 的 FindColumn 方法中出现以下异常:

JdbcSqlException:列名 全名无效。柱子: '全名'

这是我的 SQL 查询

SELECT U.FirstName + ' ' + U.LastName AS FullName FROM User as U

有人吗?

请注意,当我直接在 SQL Server 管理工作室中运行时,查询运行良好。此外,这个查询是一个大查询的一部分,这就是为什么 U 作为别名。

【问题讨论】:

  • 你能发布完整的查询吗?我感觉问题不在此 SELECT 中。
  • 对不起,我的错。这是我的代码中的一个错误。与查询无关。打算删除问题。 @p.campbell。你是对的。谢谢。
  • 也许不要删除问题,而是将您的发现留给其他人。你不会是第一个遇到这个问题的人。
  • @p.campbell。是的,没错。不删除它。虽然希望人们不要投反对票:)
  • 您应该发布一个解释根本原因的答案,然后在时间允许时将其标记为已接受。

标签: sql sql-server-2005 jdbc


【解决方案1】:

当您输入“AS FullName”时,Fullname 现在是一个标签。 JDBC 通过“列名”或“字段名”获取数据。您必须相应地更改您的代码(我不知道您的编程语言)。

【讨论】:

    【解决方案2】:

    您可以尝试在字符串连接周围加上括号,如

    SELECT (U.FirstName + ' ' + U.LastName) AS FullName FROM User U
    

    分享和享受。

    【讨论】:

      【解决方案3】:

      抱歉,这么晚才回复。我相信有人会需要答案。我也遇到过同样的问题,虽然我不知道具体原因和原因,但我找到了解决方法(至少对我而言)。

      jahanzeb farooq 没有显示他的代码,但是如果您在当前方法之外声明了 PreparedStatementResultSet 变量变量并在其他查询中使用它们,那么请尝试在当前方法中重新声明它们,即

      PreparedStatement pst=conn.prepareStetement(sql);
      ResultSet rs=pst.executeQuery();
      

      问题将被排序(或至少修复)

      【讨论】:

        【解决方案4】:
        String sql = "SELECT U.FirstName + ' ' + U.LastName AS FullName FROM User U ";
        
        pst = conn.prepareStatement(sql);
        
        rs = pst.executeQuery();
        
        if (rs.next()) {
        
          String fullname = rs.getString("FullName");
        
          jtextfiel.setText(fullname);
        
          //////or - short 
        
          jtextfiel.setText(rs.getString("FullName"));
        }
        

        【讨论】:

        • 描述在哪里?请添加有关您的答案的相关描述。避免在此处仅转储代码。如果您添加了有关您的答案的一些细节,那就更好了。
        • 您遇到了什么问题?
        猜你喜欢
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        相关资源
        最近更新 更多