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

مشكلة لعرض بيانات من قاعدة بيانات إلى Jtable

مغلق
بدأه mr.beshoy في 30 مارس 2011 · 1 رد · 600 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هنا أريد عرض بيانات من قاعدة بيانات من جدول إلى JTable .... استعملت هذا ال code سابقاً و يعمل جيداً

و لكن هنا يعطينى NullPOinterException

وصف للcode

------------------------

calss DbConnection للإتصال بقاعدة البيانات .

class ShowAllClients لعرض البيانات فى Jtable .

class DatabaseOperation1 يجلب الصفوف و الأعمدة و يرسلهم للجدول كا vectors

المشكلة فى ال class DatabaseOperation1 فى الدالة getALLHeading() يعطينى nullPointerException على السطر :

   ResultSetMetaData metaData = originalRsAllClient.getMetaData();

و أثناء عملى لل debug على هذه الدالة يعطينى : id=-1 !!!!

الصراحة أنا حاولت فيها كتير لكن مش عارف فين الخطأ !!!

ال code + قاعدة البيانات مرفقين

Test1.rar

#2

السلام عليكم ..

طبعاً اخذ مني وقت حتى افهم الكلاسات الخاصة بمشروعك حتى استطيع المساعدة ... :) عموماً المشكلة معك كالتالي اخي الكريم :

اولاًفي الكلاس ShowAllClients و بالتحديد داخل الكنستراكتر انت تقوم بتشكيل الجدول كالتالي :

table = new JTable(new DatabaseOperation1().performeQueryShowAllClients(), new DatabaseOperation1().getALLHeading());

و هذا معناه انك تقوم بعمل كائنين اثنين مختلفين الاول حتى يجلب لك قائمة العملاء عبر الكلاس DatabaseOperation1 و هذا سيعمل معك بشكل صحيح ...

لكن المشكلة هي في الكائن الثاني الذي يجلب اسماء الاعمده :

 new DatabaseOperation1().getALLHeading()

فهذه العملية سوف تستدعي الميثود getALLHeading من الكلاس DatabaseOperation1 .. و هنا هي المشكلة ... لاحظ معي الميثود getALLHeading :

public Vector<String> getALLHeading() throws SQLException {
        Vector<String> head = new Vector<String>();
        try {
            ResultSetMetaData metaData = originalRsAllClient.getMetaData();
            int count = metaData.getColumnCount();
            for (int i = 1; i <= count; i++) {
                head.add(metaData.getColumnName(i));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return head;
    }

الخلل هو انك تستدعي اسماء الاعمدة بدون تحديد جملة إستعلام SQL للكائن originalRsAllClient .. فهو كائن جديد و ليس الكائن المرتبط بالاستعلام الخاص بجلب اسماء العملاء ..

عليك ان تضيف إستعلام داخل الميثود getALLHeading حتى تسترجع بعدها اسماء الاعمدة بالشكل التالي :

originalRsAllClient = originalStatementAllClient.executeQuery(stmt);

لاحظ الصورة بعد الإضافة:

post-20471-022106000 1301438320_thumb.gi

و هذا هو الكود ايضاً:

Test1.rar

المرفقات
jdbc.GIF
1

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

هذا الموضوع مغلق.

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