SQLException未找到列

时间:2016-09-04 17:26:02

标签: java mysql sqlexception

也许这是一个愚蠢的问题,但我真的试图解决问题而没有成功,我有一个名为StockNivSens的方法如下:

public void StockNivSens(){
    int nbrRoles = getNbrRoles();
    String objID;
    int sumPerm = 0, pName = 0;
    String sql = "SELECT objectdwID, peName "
            + "FROM permissiondw pdw, securityrole sr "
            + "WHERE pdw.securityPropertyID = sr.securityPropertyID "
            + "AND pdw.RoleID = sr.RoleID";
    try {
        pst = conn.prepareStatement(sql);
        res = pst.executeQuery();
        while(res.next()){
            objID = res.getString("objectdwID").toString();
            pName = Integer.parseInt(res.getString("peName"));
            ....

当我执行它时,它会给我一个SQLException错误:

java.sql.SQLException: Column 'peName' not found.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:862)
    at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1076)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5206)
    at com.GRoles.NiveauDeSensibilite.StockNivSens(NiveauDeSensibilite.java:732)
    at com.GRoles.NiveauDeSensibilite.<init>(NiveauDeSensibilite.java:282)
    at com.GRoles.NiveauDeSensibilite$1.run(NiveauDeSensibilite.java:77)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

但是当我在Mysql Workbench上执行它时它会起作用:

enter image description here

也许解析是导致错误的原因,但我需要 int 格式的变量pName(它在数据库中是 varCHAR

编辑1:

当我添加:

System.out.println(objID);
System.out.println(pName);

它显示了结果。

16
3

然后打印错误。

编辑2:

我用明确的一个替换了impecit sql:

String sql = "select objectdwID, peName "
                + "from permissiondw pdw inner join securityrole sr "
                + "WHERE pdw.securityPropertyID = sr.securityPropertyID"
                + "AND pdw.RoleID = sr.RoleID";

错误仍然存​​在。

0 个答案:

没有答案