Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

JDBC Intro | معرفی JDBC

📖توضیحات درس

🎥 این ویدیو قسمت سی‌ودوم از بوت‌کمپ رایگان جاواست. 📚 معرفی کلی JDBC در جاوا در این جلسه به یکی از مهم‌ترین ابزارهای اتصال جاوا به دیتابیس‌ها می‌پردازیم: JDBC. با هم یاد می‌گیریم JDBC چیست، چه کاربردی دارد و چرا استفاده از آن برای کار با پایگاه‌داده‌ها ضروری است. در این ویدیو با مفاهیم اصلی JDBC آشنا می‌شویم: - معرفی DriverManager و نقش آن در برقراری اتصال به دیتابیس - کار با Statement برای اجرای کوئری‌ها - مدیریت و خواندن نتایج با ResultSet - بستن صحیح اتصال‌ها (close connection) برای جلوگیری از خطاها و نشتی حافظه در پایان جلسه یک مرور کلی داریم تا همه نکات مهم به‌صورت منظم در ذهن تثبیت شود. 📌 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی می‌تونی توی گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار.
00:41:19🎯رایگان

📄جزوه

مفاهیم کلیدی

  • JDBC (Java Database Connectivity)
    یک API استاندارد در جاوا که به برنامه‌نویسان اجازه می‌دهد به انواع پایگاه‌داده‌های رابطه‌ای مثل PostgreSQL، MySQL و Oracle متصل شده و دستورات SQL را اجرا کنند.

  • DriverManager
    کلاسی که مسئول مدیریت درایورهای دیتابیس و برقراری اولین پل ارتباطی (Connection) بین برنامه جاوا و پایگاه‌داده است.

  • Connection
    یک Interface که نشان‌دهنده یک اتصال فیزیکی با پایگاه‌داده است. تمام تعاملات با دیتابیس از طریق این شیء انجام می‌شود.

  • Statement
    ابزاری برای ارسال دستورات SQL ساده به سمت دیتابیس. زمانی استفاده می‌شود که کوئری‌ها پارامتر متغیر ندارند.

  • PreparedStatement
    نسخه‌ی پیشرفته‌تر و امن‌تر Statement که کوئری‌ها را از پیش کامپایل کرده و برای اجرای دستورات تکراری با پارامترهای مختلف بسیار بهینه است.

  • ResultSet
    یک جدول مجازی از داده‌ها که پس از اجرای کوئری‌های SELECT توسط دیتابیس برگردانده می‌شود و امکان پیمایش روی سطرها را فراهم می‌کند.

  • Maven Dependency
    کتابخانه‌های خارجی (مثل درایور مخصوص PostgreSQL) که باید به پروژه اضافه شوند تا جاوا زبان دیتابیس مورد نظر را متوجه شود.

نکات مهم مصاحبه‌ای

  • چرا به جای آرایه‌ها از JDBC و دیتابیس استفاده می‌کنیم؟
    به دو دلیل اصلی: ۱. پایداری داده‌ها (با بستن برنامه یا قطع برق، داده‌ها از بین نمی‌روند) ۲. مدیریت حجم بالای داده (میلیون‌ها رکورد که در رم جا نمی‌شوند) و جستجوی بهینه.

  • تفاوت متدهای executeQuery و executeUpdate چیست؟
    متد executeQuery برای دستورات SELECT استفاده می‌شود و یک ResultSet برمی‌گرداند، اما executeUpdate برای تغییرات مثل INSERT ،UPDATE و DELETE به کار می‌رود و تعداد سطرهای تغییر یافته را برمی‌گرداند.

  • چرا بستن (close) منابع در JDBC ضروری است؟
    اتصال به دیتابیس منابع سیستم را اشغال می‌کند. اگر Connection ،Statement و ResultSet پس از اتمام کار بسته نشوند، با نشت منابع (Resource Leak) مواجه می‌شویم که می‌تواند باعث از کار افتادن برنامه یا دیتابیس شود.

مثال یا سناریوی کاربردی

برای اتصال به دیتابیس PostgreSQL و ایجاد یک جدول، مراحل زیر طی می‌شود:

۱. افزودن درایور: ابتدا باید وابستگی (Dependency) مربوط به postgresql را از مخازن Maven دریافت و به فایل pom.xml اضافه کنید.

۲. برقراری اتصال: با استفاده از آدرس URL دیتابیس، نام کاربری و رمز عبور، یک اتصال برقرار می‌کنیم:

String url = "jdbc:postgresql://localhost:5432/postgres";
Connection connection = DriverManager.getConnection(url, "user", "pass");

۳. ساخت جدول و درج داده:

Statement statement = connection.createStatement();
// ایجاد جدول
statement.execute("CREATE TABLE IF NOT EXISTS employees (id SERIAL, name VARCHAR(50))");
// درج داده
int rowsAffected = statement.executeUpdate("INSERT INTO employees (name) VALUES ('John')");

۴. خواندن داده‌ها:

ResultSet resultSet = statement.executeQuery("SELECT * FROM employees");
while (resultSet.next()) {
    System.out.println(resultSet.getString("name"));
}

بیشتر بدانید

  • فرمت URL: ساختار آدرس اتصال به PostgreSQL به صورت jdbc:postgresql://host:port/database_name است که پورت پیش‌فرض آن معمولاً 5432 می‌باشد.

  • مدیریت استثناها: هنگام کار با JDBC، همیشه باید با SQLException سر و کار داشته باشید؛ زیرا ممکن است دیتابیس در دسترس نباشد یا کوئری اشتباه نوشته شده باشد.

  • آزادسازی منابع: همیشه در انتهای کار، متد .close() را روی اشیاء ارتباطی صدا بزنید تا منابع دیتابیس آزاد شوند.