Java EE va JDBC bilan CRUD amallarini bajarish Reja: 1. CRUD with JDBC Project JDBC nima? Java ma`lumotlar bazasiga ulanish (JDBC) bu Java dasturlariga ma`lumotlar bazasini boshqarish tizimlariga kirish imkonini beruvchi standart amaliy dasturlash interfeysining (API) JavaSoft spetsifikatsiyasi. JDBC API Java dasturlash tilida yozilgan interfeyslar va sinflar to`plamidan iborat. Ushbu standart interfeys va sinflardan foydalanib, dasturchilar ma`lumotlar bazalariga ulanadigan ilovalarni yozishlari, tuzilgan so`rovlar tilida (SQL) yozilgan so`rovlarni yuborishlari va natijalarni qayta ishlashlari mumkin. JDBC standart spetsifikatsiya bo`lganligi sababli, JDBC API dan foydalanadigan bitta Java dasturi ushbu ma`lumotlar bazasi uchun drayver mavjud bo`lsa, har qanday ma`lumotlar bazasini boshqarish tizimiga (DBMS) ulanishi mumkin. JDBC Umumiy JDBC komponentlari JDBC API quyidagi interfeys va sinflarni taqdim etadi: DriverManager − Bu sinf ma`lumotlar bazasi drayverlari ro`yxatini boshqaradi. Aloqa pastki protokolidan foydalangan holda java ilovasidan ulanish so`rovlarini tegishli ma`lumotlar bazasi drayveri bilan moslashtiradi. JDBC ostida ma`lum bir subprotokolni taniydigan birinchi drayver ma`lumotlar bazasi ulanishini o`rnatish uchun ishlatiladi. Driver − bu interfeys ma`lumotlar bazasi serveri bilan aloqalarni boshqaradi. Siz juda kamdan-kam hollarda Driver obyektlari bilan bevosita muloqot qilasiz. Buning o`rniga siz ushbu turdagi ob`ektlarni boshqaradigan DriverManager obyektlaridan foydalanasiz. Shuningdek, u Driver ob`ektlari bilan ishlash bilan bog`liq tafsilotlarni abstrakt qiladi. Connection − bu ma`lumotlar bazasi bilan bog`lanishning barcha usullari mavjud bo`lgan interfeys. Connection ob`ekti aloqa kontekstini ifodalaydi, ya`ni ma`lumotlar bazasi bilan barcha aloqa faqat connection ob`ekti orqali amalga oshiriladi. Statement − SQL bayonotlarini ma`lumotlar bazasiga yuborish uchun ushbu interfeysdan yaratilgan ob`ektlardan foydalanasiz. Ayrim olingan interfeyslar saqlangan protseduralarni bajarishdan tashqari parametrlarni ham qabul qiladi. ResultSet − Ushbu ob`ektlar bayonot ob`ektlari yordamida SQL so`rovini bajarganingizdan so`ng ma`lumotlar bazasidan olingan ma`lumotlarni o`zida saqlaydi. SQLException − Bu sinf ma`lumotlar bazasi ilovasida yuzaga keladigan har qanday xatolarni ko`rib chiqadi. JDBC (Java DataBase Connectivity) Ma`lumotlar omboriga bog`lanish deb tarjima qilinadi. Java dasturni har qanday turdagi MOBT bilan qo`llash uchun ishlatiladi. Java.sql paketi orqali ishlatiladi Java dastur va MOBT o`rtasida bog`lovchi vosita sifatida xizmat qiladi Har bir MOBT ning o`zining drayveri mavjud. Qaysi MOBT ga ulamoqchi bo`lsangiz o`sha drayverni yuklaysiz xolos. JDBC JDBC – ma`lumotlar omboriga maxsus URL orqali bog`lanishni ta`minlovchi DRAYVERlar konsepsiyasiga asoslangan. Drayverlar esa dastur ishlayotgan paytda dinamik tarzda yuklanishi mumkin. JDBC ning afzalliklari Foydalanish uchun juda qulay: foydalanuvchi(dasturchi) foydalanmoqchi bo`lgan ma`lumotlar omborini boshqarish tizimi(MOBT) bilan ishlash ko`nikmasiga ega bo`lmasdan turib ham bemalol dastur tuza oladi; Agarda kompaniya boshqa MOBT ga o`tishni xoxlasa kod deyarli o`zgarmaydi. O`zgarishlar esa aynan SQL dialektlari bilan bog`liq bo`ladi; Hech qanday client dasturni o`rnatishga hojat yo`q; Istalgan MOBTga yengil yoziladigan URL orqali bog`lanish mumkin; JDBC API interfacelari Asosan 2 xil turdagi interfacega ega: birinchisi – dastur yaratuvchilar uchun va ikkinchisi driver yaratuvchilar uchun mo`ljallangan. MOBT bilan bog`lanish java.sql.Connection interface ini amalga oshirgan klass orqali amalga oshiriladi. Bog`lanishga ega bo`lgan holda Statement ob`ekti orqali MOBT ga SQL so`rovlarni amalga oshirish mumkin. Statement ni quyidagi turlari mavjud: java.sql.Statement – umumiy foydalanishga mo`ljallangan Statement java.sql.PreparedStatement – parametrlarini berish imkoni mavjud bo`lgan uchun mo`ljallangan Statement java.sql.CallableStatement – MO funksiya va proseduralarini chaqirish Statement java.sql.ResultSet – so`rov natijasi bilan ishlashga mo`ljallangan interface so`rovlarni uchun bajarish mo`ljallangan JDBC orqali MO ga so`rovlarni amalga oshirish JDBC orqali MO ga so`rovlarni amalga oshirish quyidagi bosqichlarda amalga oshiriladi: Connect Query Process results Close 1-bosqich: Connect Connect URL ni aniqlash Query Driverni registratsiya qilish Process results MO ga bog`lanish Close URLni aniqlash • URL=“jdbc:”+mobt+“://”+host+“:”+port+“/”+db; • mobt= "postgresql"; • host = "localhost"; • port = "5432"; • db = “test_db"; Driverni registratsiya qilish Class.forName("org.postgresql.Driver") MO ga bog`lanish url= “jdbc:postgresql://localhost:5432/test_db"; dbUser = "postgres"; dbPassword = “******"; Connection connection = DriverManager.getConnection(url, dbUser, dbPassword); 2-bosqich: Query Connect Query Statement yaratish Process results MO so`rov yuborish Close Statement yaratish Statement statement = connection.createStatement(); MO so`rov yuborish String sql = "select * from users;"; statement.executeQuery(sql); 3-bosqich: So`rov natijasini qabul qilib olish So`rov natijasini qabul qilib olish String sql = "select * from users;"; ResultSet resultSet = statement.executeQuery(sql); Natijani java o`zgaruvchilariga o`zlashtirish ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { System.out.print(“id=" + resultSet.getInt(1)); System.out.print("\nname=" + resultSet.getString(“name")); System.out.print("\nusername=" + resultSet.getString(3)); System.out.println("\tpassword=" + resultSet.getString(4)); System.out.println("\temail=" + resultSet.getString(5)); System.out.println("\tphone=" + resultSet.getString(4)); } 4-bosqich: Connectionni yopish PreparedStatement bilan ishlash String sql = "select * from users where name like `%?%`? and ? Email like `%?`"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, “ali”); preparedStatement.setString(2, “gmail.com”); ResultSet resultSet = preparedStatement.executeQuery(); CallableStatement bilan ishlash String sql = “{call add_user(?,?,?,?,?,?,?)}"; CallableStatement callableStatement = connection.prepareCall(sql); callableStatement.setString(1, “Solijon"); callableStatement.setString(2, “solijon"); callableStatement.setString(3, “123"); callableStatement.setString(4, “solijon@gmail.com"); callableStatement.setString(5, “+998997776655"); callableStatement.registerOutParameter(6, 16); callableStatement.registerOutParameter(7, Types.VARCHAR); callableStatement.executeUpdate(); E`TIBORINGIZ UCHUN RAHMAT!