7-modul · 5-dars: JDBC
Daraja: Ilg'or
JDBC. Jakarta EE bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi JDBC tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya JDBC Java ilovasi uchun relational bazaga kirish APIidir. pgJDBC PostgreSQL protokolini amalga oshiruvchi driver. DriverManager connection yaratishga yordam beradi; server ilovalarida odatda DataSource va connection pool ishlatiladi. Connection DB sessiyasi va tranzaksiya chegarasini, PreparedStatement parametrli buyruqni, ResultSet natijani ifodalaydi. PreparedStatementdagi ? placeholder qiymat uchun ishlatiladi; jadval yoki ustun nomini parametr bilan almashtirib bo'lmaydi, bunday nomlarni qat'iy ruxsat ro'yxatidan tanlang. Parametrli so'rov SQL injectiondan himoya qilishning asosiy yo'lidir. Natijani next() bilan siljitib o'qiysiz; JDBC indekslari ko'p APIlarda birdan boshlanadi. Connection, statement va result setni try-with-resources bilan yoping. Pooldan olingan connectionni close qilish uni poolga qaytaradi. autoCommit false bo'lsa muvaffaqiyatda commit, xatoda rollback kerak. Juda uzoq tranzaksiya va ochiq result set poolni tugatishi mumkin; timeout, fetch size va monitoringni vazifaga mos sozlang.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/7-module%28Jakarta%20EE%29.md) [Rasmiy qo‘llanma](https://jakarta.ee/specifications/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
try (var c = dataSource.getConnection();
var ps = c.prepareStatement("SELECT title FROM topics WHERE id = ?")) {
ps.setLong(1, topicId);
try (var rs = ps.executeQuery()) {
while (rs.next()) System.out.println(rs.getString("title"));
}
}
Keng tarqalgan xatolar
- String concatenation bilan SQLga username qo'shish PreparedStatement ishlatilgan nomigagina xavfsiz bo'lmaydi.
Mashqlar
- Parametr sifatida apostrofli matn yuboring; u query sintaksisiga emas, faqat qiymatga aylanishini tekshiring.
- Bir so'rovni string qo'shish bilan va PreparedStatement bilan yozib, ' OR 1=1 -- kiritib sinang.
Teglar: modul-07, nazariya, pdp