也许这是一个愚蠢的问题,但我真的试图解决问题而没有成功,我有一个名为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上执行它时它会起作用:
也许解析是导致错误的原因,但我需要 int 格式的变量pName
(它在数据库中是 varCHAR )
当我添加:
System.out.println(objID);
System.out.println(pName);
它显示了结果。
16
3
然后打印错误。
我用明确的一个替换了impecit sql:
String sql = "select objectdwID, peName "
+ "from permissiondw pdw inner join securityrole sr "
+ "WHERE pdw.securityPropertyID = sr.securityPropertyID"
+ "AND pdw.RoleID = sr.RoleID";
错误仍然存在。