السلام عليكم
قبل بضعة ايام فكرت اعمل مشروع في NetBeans يحتوي على قاعدة بيانات ,,, يعني مشروع مرتبط بقاعدة البيانات الا ان هناك عائق كبير وهي الاخطاء المجهولة و الغير منتهية ,,, و يتغير الخطأ الى خطأ اخر دون تغيير اي حرف من البرنامج , او يكون البرنامج صحيحا و يعمل ما رغبت به و في الساعة التالية افتح المشروع اتفاجئ بان البرنامج لا يعمل و به اخطاء مجهولة بالرغم اني لم اغير اي حرف من البرنامج ,,, لدي هذا الملف وهو عبارة عن Class وظيفته الربط ما بين المشروع و القاعدة و هو كالتالي :
public class MyConnector {
static final String JDBC_DRIVER = "org.apache.derby.jdbc.ClientDriver";
static final String DATABASE_URL = "jdbc:derby://localhost:1527/userdb";
private static Connection connection;
private static Statement statement;
private static ResultSet resultSet ;
public MyConnector(){
try {
Class.forName( JDBC_DRIVER );
connection = DriverManager.getConnection( DATABASE_URL );
statement = connection.createStatement();
} catch ( SQLException sqlException ) {
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database Error", JOptionPane.ERROR_MESSAGE );
}
catch ( ClassNotFoundException classNotFound ) {
JOptionPane.showMessageDialog( null, classNotFound.getMessage(),
"Driver Not Found", JOptionPane.ERROR_MESSAGE );
}
}
public static ResultSet excuteQuery(String query){
try {
resultSet = statement.executeQuery(query);
} catch ( SQLException sqlException ) {
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database Error", JOptionPane.ERROR_MESSAGE );
}
return resultSet ;
}
public static void excuteUpdate(String query){
try {
statement.executeUpdate(query);
} catch ( SQLException sqlException ) {
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database Error", JOptionPane.ERROR_MESSAGE );
}
}
}
اضفته الى مشروعي و بدأت استعمل دواله في مشروعي الا ان كلا الدالتين excuteQuery و excuteUpdate لا يعملان جيدا بالرغم ان ليس هناك اخطاء في Class مشارة اليها و لا في مشروعي ثم بدأت افعل اختبارا ل Class اي اني بدلا من استخدام هاتان الدالتين , استخدمت اشياء اخرى و هي كالتالي :
public void actionPerformed(ActionEvent e) {
if(e.getSource()==OK1)
{
UserName.setText(MyConnector.DATABASE_URL);
}
}
استخدمت المتغير DATABASE_URL حيث ان بمجرد ان المستخدم يقوم بالضغط على OK1 يظهر قيمته في حقل النص , و البرنامج كان يعمل صحيحا و ليس به اي خطأ الا ان في اليوم التالي و هو اليوم , لم يعمل البرنامج بهذه الطريقة و بدأت تظهر نفس الاخطاء و كأنما استخدمت احدى الدالتين و الاخطاء هي كالتالي , (تظهر في الاسفل باللون الاحمر) :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MyConnector.excuteUpdate(MyConnector.java:63)
at NewJFrame.actionPerformed(NewJFrame.java:292)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:5517)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
at java.awt.Component.processEvent(Component.java:5282)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3984)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
BUILD SUCCESSFUL (total time: 11 seconds)
و الجدير بالذكر ان الجملة الاخيرة تبين ان البرنامج قد تم بنجاح بالرغم ان البرنامج لم يعمل بسبب هذه الاخطاء المجهولة , و اتمنى من اعضاء المنتدى ان يكونوا عونا لي في هذه المشكلة الكبيرة التي قد يراها البعض انها مشكلة صغيرة و شكرا


