Javaبرنامه نویسی

آموزش اتصال به پایگاه داده با جاوا

در این مقاله ما به جزئیات مربوط به اتصال جاوا به پایگاه داده را نقد و برسی میکنیم.

درایور دیتابیس MySQL

همان‎طور که در بالا اشاره شد برای این که بتوانید به یک پایگاه داده MySQL متصل شوید به درایور JDBC ویژه MySQL نیاز دارید. نام این درایور Connector/J است و می‎توانید آن را از وب‎سایت MySQL  دریافت کنید.

بعد از این که فایل ZIP (یا TAR.GZ) را دانلود کردید، آرشیو را باز کرده و فایل mysql-connector-java–bin.jar را در یک مکان مشخص کپی کنید. این فایل برای اجرای کدهایی که از درایور MySQL JDBC استفاده می‎کند نیاز است.

ساخت یک پایگاه داده ساده

فرض می‎کنیم که شما پایگاه داده MySQL را دانلود کرده‎اید و به طور کامل آن را نصب کرده و به آن دسترسی دارید. برای ادامه کار و انجام کوئری گیری ابتدا باید یک پایگاه داده ساده بسازید. با استفاده از یک کلاینت مورد نظر خود به پایگاه داده متصل شوید و فرمان زیر را برای ساخت یک پایگاه داده به نام sample اجرا کنید:

create database sample;

ما برای اتصال به این پایگاه داده به یک نام کاربری و کلمه عبور نیز احتیاج داریم (مگر این که شما تصمیم داشته باشید با حساب مدیریت به آن متصل شوید که اصولا چنین کاری توصیه نمی‎شود).

فرمان زیر یک نام کاربری به نام testuser را به پایگاه داده MySQL از طریق ماشین یکسان localhost متصل خواهد کرد که از کلمه عبور securepwd استفاده می‎کند.

create user 'testuser'@'localhost' identified by 'securepwd';

اگر قصد دارید به یک پایگاه داده متصل شوید که روی ماشین دیگری (در مثال ما remotemc) اجرا می‎شود، باید از فرمان زیر استفاده کنید (remotemc می‎تواند یک نام میزبان یا آدرس ای‎پی باشد):

create user 'testuser'@'remotemc' identified by 'securepwd';
بعد از این که نام کاربری و کلمه عبور ساخته شد شما باید اجازه دسترسی به پایگاه داده sample که قبلا ساخته بودیم را برای آن صادر کنید:
grant all on sample.* to 'testuser'@'localhost';

یا اگر این پایگاه داده روی ماشین دیگری است:

grant all on sample.* to 'testuser'@'remotemc';

حالا شما باید بتوانید با استفاده از نام کاربری و کلمه عبور ایجاد شده به این پایگاه داده متصل شوید. شما همچنین می‎توانید بعد از اتصال فرامین زیر را اجرا کنید تا مطمئن شوید تمام مجوزهای لازم به خوبی کار می‎کنند:

create table joe(id int primary key auto_increment, name varchar(25));
drop table joe;

تنظیمات جاوا

در این مرحله ما به جزئیات اتصال به MySQL از طریق جاوا خواهیم پرداخت. اولین مرحله بارگیری درایور دیتابیس است. این کار با استفاده از فرمان زیر در یک مکان مناسب انجام می‎شود:

Class.forName("com.mysql.jdbc.Driver");

این کد می‎‎تواند یک استثنا را نیز اضافه کند:

try {
  Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException ex) {
  // use the exception here
}

خیلی رایج است که این کد را در یک بلوک ایستا درون یک کلاس قرار داد تا اگر درایور قادر به بارگیری نبود برنامه فورا پیام خطا صادر کند.

public class Sample
{
  static {
    try {
      Class.forName("com.mysql.jdbc.Driver");
    } catch(ClassNotFoundException ex) {
      System.err.println("Unable to load MySQL Driver");
    }
  }
}

مسلما برنامه برای این که بتواند درایور را پیدا کند باید با درایور JAR (که در بخش قبل دانلود و استخراج کردیم) ارتباط برقرار کند که مسیر آن به شکل زیر تعریف شده است.

java -cp mysql-connector-java-<version>-bin.jar:… <class to run>

اتصال به MySQL  از طریق جاوا

حالا که ما جزئیات مربوط به بارگیری درایور MySQL از جاوا را پشت سر گذاشتیم، زمان آن رسیده که به پایگاه داده متصل شویم. یکی از روش‎های اتصال استفاده از DriverManager است:

String jdbcUrl = ...;
Connection con = DriverManager.getConnection(jdbcUrl);

jdbcUrl بیانگر جزئیات اتصال شامل سروری که پایگاه داده در آن قرار دارد، نام کاربری و نظایر آن است. در اینجا نمونه URL از مثال ما را مشاهده می‎کنید:

String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=secrepwd";

توجه داشته باشید که ما تمام پارامترهای مورد نیاز را وارد کرده‎ایم که شامل نام میزبان (در اینجا localhost)، نام کاربری و کلمه عبور است (استفاده از کلمه عبور به این شکل کار خوبی نیست، در ادامه با روش جایگزین آن آشنا خواهید شد.)

یک برنامه کامل برای بررسی وضعیت اتصال و استفاده از این jdbcUrl به این شکل خواهد بود:

public class Sample
{
  static {
    try {
      Class.forName("com.mysql.jdbc.Driver");
    } catch(ClassNotFoundException ex) {
      System.err.println("Unable to load MySQL Driver");
    }
  }

  static public void main(String[] args) throws Exception
  {
    String jdbcUrl = "jdbc:mysql://localhost/sample?user=testuser&password=securepwd";
    Connection con = DriverManager.getConnection(jdbcUrl);
    System.out.println("Connected!");
    con.close();
  }
}

توجه داشته باشید که اتصال به پایگاه داده بخش ارزشمندی از یک برنامه است و باید بسته باقی بماند. کد بالا اما به دلیل یک استثنا اتصال را نبسته است. به منظور بستن این اتصال از الگوی زیر استفاده کنید:

try(Connection con = DriverManager.getConnection(jdbcUrl)) {
  System.out.println("Connected!");
}

همان‎طور که در بالا نیز اشاره کردیم اضافه کردن کلمه عبور به آدرس JDBC روش خوبی نیست. برای تعیین مستقیم نام کاربری و کلمه عبور شما می‎توانید از این گزینه جایگزین استفاده کنید:

String jdbcUrl = "jdbc:mysql://localhost/sample";
try(Connection con = DriverManager.getConnection(jdbcUrl, "testuser", "securepwd")) {
}

کوئری گیری از پایگاه داده در جاوا

حالا که اتصال به پایگاه داده برقرار شده است روش انجام کوئری مثل کوئری نسخه دیتابیس را بررسی خواهیم کرد:

select version();

در جاوا یک کوئری به این شکل اجرا می‎شود. یک آبجکت Statement ساخته می‎شود و با استفاده از متد executeQuery() که یک ResultSet را برمی‎گرداند کوئری مورد نظر انجام می‎شود:

String queryString = "select version()";
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(queryString);

نسخه را از ResultSet به روش زیر چاپ می‎کنیم. ۱ نشان دهنده ایندکس ستون نتایج به دست آمده است که از ۱ شروع می‎شود:

while ( rset.next()) {
  System.out.println("Version: " + rset.getString(1));
}

بعد از پردازش نتایج، آبجکت باید بسته شود:

rset.close();
stmt.close();

این مراحلی بود که شما برای اتصال به MySQL از جاوا و انجام یک کوئری ساده باید طی کنید.

محمد فرجی

تلاش بیهوده نیست...

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا