当前位置: 首页 > 面试题库 >

SQLException:无效的列名...?

郑理
2023-03-14
问题内容

我有一个JSP文件,我将在Eclipse,Maven和Tomcat的帮助下将其部署在Java项目中。我还有一些其他的JSP文件与此文件几乎相同,尽管它们运行不同的操作。无论如何,当我转到页面时,我已经给出了:

org.apache.jasper.JasperException: An exception occurred processing JSP page /entertime2.jsp at line 106

103:    rsBug = psBug.executeQuery();
104:
105:    while(rsBug.next()) {
106:        Bug b = new Bug(rsBug);
107:        out.println("<option value='" + b.get(Bug.BUG_ID) + "'>" + b.get(Bug.TITLE) + "</option>");
108:    }
109:    rsBug.close();

root cause

javax.servlet.ServletException: java.sql.SQLException: Invalid column name ixPersonOpenedBy.

Bug是一个自定义类,可以接受结果集rsBug--并执行以下操作:

setValue(Bug.BUG_ID,rs.getString(Bug.BUG_ID));
setValue(Bug.PERSON_OPENED_BY,rs.getString(Bug.PERSON_OPENED_BY));
setValue(Bug.PERSON_ASSIGNED_TO,rs.getString(Bug.PERSON_ASSIGNED_TO));
setValue(Bug.TITLE, rs.getString(Bug.TITLE));
setValue(Bug.PROJECT_ID,rs.getString(Bug.PROJECT_ID));

其中BUG_ID,PERSON_OPENED_BY,PERSON_ASSIGNED_TO,TITLE和PROJECT_ID都是Bug类的所有字符串成员,它们与数据库中存储的Bug表中的列名相对应。现在,表中有一ixPersonOpenedBy列,但以前从未给我任何问题。我不确定它是否与我尝试执行的SQL语句有关,但是我之前在其他JSP之一中使用了EXACT相同的语句,并且没有给我带来任何麻烦。此外,在项目的早期部署中不会弹出此错误。我在一个不相关的变量中有一个错字,一旦修正,这个家伙突然冒出来。

无论如何,当我知道“应该”列有效时,谁能看到为什么会出现此错误?如果您需要查看数据库中更多的JSP,Bug类或Bug表,请告诉我;任何帮助表示赞赏。

编辑:这是我正在使用的两个SQL语句,但是我不确定是否其中一个引起了问题。

SELECT p.ixPerson, p.sFullName 
FROM Person p, jwTeamMembers t 
WHERE p.ixPerson = t.ixPerson 
ORDER BY p.sFullName ASC


SELECT b.ixBug, b.sTitle 
FROM Bug b, Person per, Project p, Area a, jwTime t, jwTeamMembers m, jwTeam jt, Status s, jwDivision d
WHERE per.ixPerson = t.ixPerson AND t.ixBug = b.ixBug AND b.ixProject = p.ixProject AND b.ixArea = a.ixArea
    AND per.ixPerson = m.ixPerson AND m.ixTeam = jt.ixTeam AND b.ixStatus = s.ixStatus AND a.ixDivision *= d.ixDivision
    AND (per.ixPerson = ?)
GROUP BY b.ixBug, b.sTitle
ORDER BY b.ixBug DESC

第二条语句中的参数填充为:

psBug.setInt(1, Integer.valueOf(personId).intValue());

问题答案:

java.sql.SQLException:无效的列名ixPersonOpenedBy。

提到的列未由返回SELECT

实际上,您的两个SELECT查询都没有指定该列。相应地修复它。例如

SELECT b.ixBug, b.sTitle, b.ixPersonOpenedBy


 类似资料:
  • 问题内容: 这是logcat: 与之关联的行是: 可能是什么问题呢?创建数据库就好了。您还需要查看其他代码吗? 更新: 我非常确定此列存在。我用这个查询数据库: 在LogCat中: 因此该列确实存在。 问题答案: 我发现了一个奇怪的解决方案。在中。你所要做的:

  • 问题内容: 正如您从上一篇文章中看到的那样,我是使用C#创建网站的新手(尽管我有相当的经验将其用于Windows Forms应用程序)。强大的功能使我远离PHP,但是我一直在失败,因为我认为这是基础知识。 无论如何,这是我的问题。我正在尝试创建一个到SQL数据库的简单条目。我知道我与数据库的连接很好,因为我可以整天取消SELECT查询,但是在使用Insert时遇到了麻烦。 这是我的代码: 这导致从

  • 问题内容: Eclipse JDT编译器似乎存在一个问题,在某些情况下,Java 8 lamda不能正确反序列化,而是抛出。我正在使用最新发布的维护版本,如下所示: 现有的Bug / SO条目报告了已(至少部分地)已解决的类似问题。我已经亲自验证以下问题已解决。 访问实例字段和方法的Java 8Lambda不能反序列化 https://bugs.eclipse.org/bugs/show_bug.

  • 问题内容: 我想过滤掉所有单词,这些单词包含1个数字和3个大写字母,总长度为4。在这里查看我的示例: http //gskinner.com/RegExr/?32taa ArrayList result = new ArrayList (); for(int i = 0; i <= 10; i++){ } 但是,当我将我的regexp模式传递给matcher方法时,出现错误: 我需要换一封信吗?

  • 问题内容: 我使用别名来引用计算列。这是我尝试制作的实际代码的一部分,用于计算相似度并返回相似度得分为3或更高的匹配项。 异常消息: 无效的列名“相似性”。 由于相似性不是真正的专栏文章,我将如何进行这项工作? 问题答案: 在查询的投影()阶段执行列别名和计算,该阶段在选择(和)阶段之后发生。因此,无法在子句或条件中引用它们,因为它们尚不存在。您可以将带有子句的查询用作子查询,也可以在子句中重复计

  • 我的表的结构Product的列为productId,poductName和productPrice类别的列为categoryId,categoryName和categoryproducts的列为categoryId和productId