استرجاع السجلات من MySQL في Java
سؤال
أقوم بإنشاء تطبيق بلغة 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);
}