سؤال

أقوم بإنشاء تطبيق بلغة Java لاسترداد البيانات من قاعدة بيانات MySQL.بعد تنفيذ الاستعلام، أحصل على ResultSet وأقوم بما يلي لاستخراج السجلات:

while (rs.next())
        {
            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }
            result.add(row.toString());
            row.clear();
        }

أين روبية = مجموعة النتائج و جمهورية مقدونيا = ResultSetMetaData

المشكلة هي أنني يجب أن أفعل result.add(row.toString()); افضل من مجرد result.add(row); (التي أرغب في إنشاء قائمة ArrayList ثنائية الأبعاد بها).وإلا سأحصل على نتائج فارغة.

لقد حاولت وضع صف. واضح ()؛ في البداية، قبل ل Loop، ولكن يؤدي ذلك إلى ملء جميع نتائجي بمثيلات متعددة من السجل الأخير.تماما مثل صف لم تتم إضافته إلى نتيجة حتى النهاية، عندما يتساوى مع السجل الأخير.هل أحتاج إلى "ارتكاب" ArrayList صف قبل إضافته كعنصر إلى ArrayList آخر؟إذا كان الأمر كذلك، كيف؟وأيضا من باب الفضول لماذا؟ .إلى سلسلة() العمل بشكل مختلف؟

هل كانت مفيدة؟

المحلول

من خلال إضافة Row.toString()، فإنك تقوم بإنشاء كائن سلسلة جديد لإضافته إلى النتيجة.

من ناحية أخرى، من خلال إضافة صف، فإنك تضيف نفس الكائن إلى النتيجة، لذلك، في كل مرة يتم استدعاء Row.clear()، فإنه يفرغ جميع الصفوف في النتيجة.

ما يجب عليك فعله هو إنشاء كائن صف جديد قبل حلقة for، ولا تستخدم الصف ()row.clear.وفيما يلي مثال.

while (rs.next())
        {
            row = new ArrayList();

            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }

            result.add(row);
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top