J'ai une classe "Manager" et aussi une frame qui est "Report". Dans le cadre j'ai trois boutons radio dont les textes sont "Années avant 1970", "entre 1970 et 2000", "années après 2000" et si l'un d'entre eux est sélectionné, dans le champ de texte ci-dessous ces boutons radio, je vais montrer le nombre de lignes qui ont cette situation qui sont dans ma table SQL.aussi dans ma table SQL j'ai créé une table qui a name, family, fatherName , motherName, dateOfBirth, placeOfBirth, Aussi la première colonne est ID qui est créée automatiquement. le texte dans la colonne dateOfBirth est comme "5 décembre 2009" et j'ai juste besoin de son année !!! mais quand je cours ce code ces trace de pile seront montrées dans la console, pourquoi ?? Aidez-moi, s'il vous plaît.pourquoi il renvoie l'exception SQL?
ma classe Manager (juste une partie de ce):
public static int getPercent(String i)throws SQLException{
Statement stmt = conn.createStatement();
List<String> list = null;
if(i.equals("O")){
ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while(rst.next()){
String s1 = rst.getString(6) ;
if(rst.wasNull()){
s1=null;
}
String s2 = s1.substring(s1.length()-4);
int s3 = Integer.parseInt(s2);
if(list ==null&& s3<1970){
list = new ArrayList<String>();
}
else{
list = new ArrayList<String>();
s2 = null;
}
list.add(s2);
}
}
if(i.equals("N")){
ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while(rst.next()){
String s1 = rst.getString(6) ;
if(rst.wasNull()){
s1=null;
}
String s2 = s1.substring(s1.length()-4);
int s3 = Integer.parseInt(s2);
if(list ==null&&s3>2000){
list = new ArrayList<String>();
}
else{
list = new ArrayList<String>(0);
s2 = null;
}
list.add(s2);
}
}
if(i.equals("H")){
ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while(rst.next()){
String s1 = rst.getString(6) ;
if(rst.wasNull()){
s1=null;
}
String s2 = s1.substring(s1.length()-4);
int s3 = Integer.parseInt(s2);
if(list ==null&&s3>1970&& s3<2000){
list = new ArrayList<String>();
}
else{
list = new ArrayList<String>(0);
s2 = null;
}
list.add(s2);
}
}
return list.size();
}
mon cadre (juste une partie de cela):
private void range1ActionPerformed(java.awt.event.ActionEvent evt) {
int i = 0;
try {
i = Manager.getPercent("O");
} catch (SQLException ex) {
Logger.getLogger(BirthReport.class.getName()).log(Level.SEVERE, null, ex);
}
resulText.setText(i+"");
}
stacktarce:
Dec 17, 2009 7:57:48 AM AdminGUI.BirthReport range1ActionPerformed
SEVERE: null
java.sql.SQLException: Column Index out of range, 6 > 1.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:792)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5529)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)
at database.Manager.getPercent(Manager.java:1137)
at AdminGUI.BirthReport.range1ActionPerformed(BirthReport.java:152)
at AdminGUI.BirthReport.access$100(BirthReport.java:23)
at AdminGUI.BirthReport$2.actionPerformed(BirthReport.java:84)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at AdminGUI.BirthFrame.jButton1ActionPerformed(BirthFrame.java:190)
at AdminGUI.BirthFrame.access$300(BirthFrame.java:21)
at AdminGUI.BirthFrame$4.actionPerformed(BirthFrame.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Que se passe-t-il à la ligne 1137 de votre cours Manager? –
Je comprends, [:-)] mais quand "années avant 1970" est sélectionné, il retournera "1" (j'ai juste une ligne) mais l'année est 2006 !! – Johanna
oh, j'obtiens mon erreur que j'ai mis s2 = null; – Johanna