الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه - عنوان غير مناسب : ]مشكلتي مع قاعدة البيانات

بدأه Game11 في 30 مايو 2010 · 27 رد · 1,518 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قبل بضعة ايام فكرت اعمل مشروع في 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)

و الجدير بالذكر ان الجملة الاخيرة تبين ان البرنامج قد تم بنجاح بالرغم ان البرنامج لم يعمل بسبب هذه الاخطاء المجهولة , و اتمنى من اعضاء المنتدى ان يكونوا عونا لي في هذه المشكلة الكبيرة التي قد يراها البعض انها مشكلة صغيرة و شكرا

#2
اقتباس
البرنامج كان يعمل صحيحا و ليس به اي خطأ الا ان في اليوم التالي و هو اليوم , لم يعمل البرنامج بهذه الطريقة و بدأت تظهر نفس الاخطاء و كأنما استخدمت احدى الدالتين و الاخطاء هي كالتالي , (تظهر في الاسفل باللون الاحمر) :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at MyConnector.excuteUpdate(MyConnector.java:63)

الخطا يقول لك ان هناك كائن لا يشير على حاجه

لذلك اظهرلك خطا NullPointerException

والخطا ظهر اولا فى الداله excuteUpdate

لذلك هناك خطا

انه لم يتم الاتصال بقاعده البيانات

تاكد من وجود قاعده البيانات

لان هذا يشير الى ان هناك كائن لا يشير على شىء وانت تحاول استخدام ذلك الشىء

حاول فى التاكد ان قواعد البيانات تعمل وجرب و قولنا ايه اللى حصل ؟

1 −1

Software Developer
Mahmoudkelany.com


 

#3

أخي اضبط الشيفرة الخاصة بك بالوسم code

هذه المرة الثالثة تقريباً

هل هناك مشكلة معينة تواجهك في هذا الموضوع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

انا اعتذر من المشرفين على قسم الجافا , نعم هناك مشكلة لدي , لا استطيع الكتابة من جهة اليسار ,

و شكرا للمنتدى و للمشرفين و شكر خاص ل Eng.Hamzawy

#5

ممكن تقول لي ما هو هذا الكائن مع العلم بان الخطأ دائما يشير الى الدالة التي استخدمها من احدى الدالتين و بالتحديد يشير الخطأ الى كلمة statement و هي موجودة داخل كلا الدالتين و لو تفحصت الملف المسؤول على الربط بين المشروع و القاعدة ستلاحظها ,,, فكلامك يبدو صحيحا و لكن للاسف لم استطع تحديد الكائن :wacko:

#6
Game11 كتب:

ممكن تقول لي ما هو هذا الكائن مع العلم بان الخطأ دائما يشير الى الدالة التي استخدمها من احدى الدالتين و بالتحديد يشير الخطأ الى كلمة statement و هي موجودة داخل كلا الدالتين و لو تفحصت الملف المسؤول على الربط بين المشروع و القاعدة ستلاحظها ,,, فكلامك يبدو صحيحا و لكن للاسف لم استطع تحديد الكائن :wacko:

انا جربت الكود والله وشغال تمام

بس طبعا انا شغال على mysql اللى غيرته بس السطرين الاولين بس

انما الباقى تمام

شغال كويس

شوف بس الداتا بيز عندك

وشوف الـquery اللى بتكتبه

وشوف اسماء الجداول

انا راجعت الكود مرتين وفاهم قصدك

ولكن فعلا هيا المشكله انه فيه حاجه فالاتصال بالداتا بيز

Software Developer
Mahmoudkelany.com


 

#7

هل وانت بتعمل تجربه للكود

عملت تعريف لكائن من الـ MyConnector class ???

مثل كدا

MyConnector mc = new MyConnector();

ليس من المهم ان تستخدمه ولكن لابد من تعريف كائن على MyConnector class

Software Developer
Mahmoudkelany.com


 

#8

لا لم اعمل ذلك لان الدالتين كليهما static ,,, لكن لم اكن اعلم ان من الضروري انشاء كائن من Class حتى و لو لن استخدمه .

شكرا لمساعدتك لي , بدأت افهم الخطأ و كلامك منطقي :) ,,,, و سأجرب انشاء كائن ,

و الف شكر للمنتدى و للمشرفين و للاعضاء

#9

انا جربت , انشأت كائن و طلعت لي نافذة صغيرة تقول Driver not found ,,, و هذا الخطأ مبرمج من ضمن الملف المسؤول عن الربط (MyConnector) , هذه جزئية من الملف الموجودة في Constructer

catch ( ClassNotFoundException classNotFound ) {
                 JOptionPane.showMessageDialog( null, classNotFound.getMessage(), 
                    "Driver Not Found", JOptionPane.ERROR_MESSAGE );            
      }

ما ذا يعني هذا ؟

تم تعديل هذه المشاركة بواسطة Game11 في 31 مايو 2010 في 02:47

#10

معنى هذا الكلام أن JDBC غير موجود

بالنسبة للمشاركات الخاصة بك

أنت تستخدم الوسم code

لكنك لا تضعه بالشكل التالي

وسم البداية

code

وسم النهاية

وإنما بهذا الشكل

وسم البداية وسم النهاية ثم code

وهذا سبب المشكلة أرجو أن تأخذ هذا في الحسبان

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11

هل عملت اضافه للـ driver

فى البرنامج الخاص بك ؟

هذا الخطا يظهر عندما تنسى ان تعمل load للـ org.apache.derby.jdbc.ClientDriver

تاكد من انك الحقت هذا الـ driver بالمشروع لديك

−1

Software Developer
Mahmoudkelany.com


 

#12

تأكد ايضا يا اخى من التعليمات التى تكتبها

بتفرق كتير صدقنى و خصوصا علامات التنصيص و خلافه

00020309t.gif

1958_1963.gif
#13

ممكن تعرض الكود الخاص بامر الـ test ?

لهذه الـ class?

فنطلع على الامر المرسل الى query

واتمنى ان تكون استفدت من تعليقاتنا

وتكون ان شاء الله

فعلا المشكله اتحلت ان شاء الله

تحياتى

Software Developer
Mahmoudkelany.com


 

#14

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#15

انا اعتذر على تأخري في الرد و ذلك بسبب انقطاع النت لدي ,

انا فعلا لم اقوم بتحميل Driver في مشروعي و عندما جئت لوضع في المشروع فوجئت بأني لم اجده ضمن القائمة و انا اعتقد انه يتوجب علي تحميل JDK 1.5 بدلا من JDK 1.4 مع العلم بان NetBeans اصداره 6.7

اما بالنسبة لعلامات التنصيص و غيره فانا متأكد منها ,,,,, و اشكر كل من شارك بالموضوع

#16

هذا هو جزء من الشفرة الموجودة في مشروعي :

public void actionPerformed(ActionEvent e) {
        if(e.getSource()==OK1)
        {


 MyConnector.excuteUpdate("insert into Register(UserName,Password) values ('ali43','6546')");
    }
    }

و هذه هو 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 );
      } 


    }
}
#17
 MyConnector.excuteUpdate("insert into Register(UserName,Password) values ('ali43','6546')");

هالكود سليم

تم تعديل هذه المشاركة بواسطة Java2010 في 1 يونيو 2010 في 11:59

#18
اقتباس
انا فعلا لم اقوم بتحميل Driver في مشروعي

خلاص يقبى المشكله اتحلت

حضرتك بس تشوف الـ driver

وتنزله وتضيفه للمشروع

اما بالنسبه للـ query

MyConnector.excuteUpdate("insert into Register(UserName,Password) values ('ali43','6546')");

فهو سليم مليون بالميه ان شاء الله

الحق الــ driver للمشروع وجرب واخبرنا هل تم التصليح ام لا؟

سلام عليكم

−1

Software Developer
Mahmoudkelany.com


 

#19

لم يتم الاصلاح بعد , عندما اردت اضافة مكتبة (Driver ) وجدت عدة مكتبات و لا اعلم اي منهم اضع , واحدة منهم اسمها MySQL JDBC Driver فوضعتها و لكن المشروع بقي على حاله و لم يعمل

تم تعديل هذه المشاركة بواسطة Game11 في 1 يونيو 2010 في 17:39

#20
Game11 كتب:

لم يتم الاصلاح بعد , عندما اردت اضافة مكتبة (Driver ) وجدت عدة مكتبات و لا اعلم اي منهم اضع , واحدة منهم اسمها MySQL JDBC Driver فوضعتها و لكن المشروع بقي على حاله و لم يعمل

ما هو للاسف الـ driver بتاع قواعد البيانات بتاعتك مش موجود

ممكن حضرتك تنزل الملف اللى بالمرفقات وتضيفه الى المشروع لديك

بنفس الطريقه اللى كنت اضفت بيها mySQL JDBC Driver

لكن بدل الضغط على add libaray اضغط على add jar/folder واختار الملف والحقه بالمشروع

هذا هو الـdriver ان شاء الله

وبلغنى بماذا حدث

وان شاء الله يشتغل بعد ذلك

بالمرفقات

derbyclient.jar

1

Software Developer
Mahmoudkelany.com


 

#21

للاسف , اضفته و لكن لا شئ تغير , عندي سؤال عن كيفية اضافته ,, هل اضيف رابطه (الرابط الذي يحدد مكانه) او اسمه فقط ؟؟

و شكرا لك و للاعضاء :)

#22
Game11 كتب:

للاسف , اضفته و لكن لا شئ تغير , عندي سؤال عن كيفية اضافته ,, هل اضيف رابطه (الرابط الذي يحدد مكانه) او اسمه فقط ؟؟

و شكرا لك و للاعضاء :)

ﻻ حضرتك بتعمل له اضافه

وتختاره

فهو بيحدد المكان بتاعه

وبعدين هيضاف للمشروع بتاعك هتﻻقيه فى libaraies

العفو تحت امرك

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 2 يونيو 2010 في 02:08

Software Developer
Mahmoudkelany.com


 

#23

اخى الكريم ادخل على هذا الرابط

سيفيدك

/index.php?showtopic=219149

00020309t.gif

1958_1963.gif
#24

مشكورين , هذا الرابط افادني كثير في الاضافة ,, لكن حتى بعد اضافة الملف لا زال الخطأ مستمر,

عندي سؤال : هل توجد مكتبة اسمها java DB Driver ؟؟؟؟

تم تعديل هذه المشاركة بواسطة Game11 في 2 يونيو 2010 في 10:11

#25
اقتباس
java DB Driver

لا اعرف و لكن اعتقد انه يجب التحديد

اذا كنت على سيكول او غيره

00020309t.gif

1958_1963.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…