چگونه از طریق جاوا (Java)، به یک پایگاه‌داده مای‌اس‌کیوال (MySQL) متصل شویم
1396/11/17 10:44 , حسام اولنج

چگونه از طریق جاوا (Java)، به یک پایگاه‌داده مای‌اس‌کیوال (MySQL) متصل شویم

زبان جاوا از طریق کیت توسعه نرم‌افزاری (SDK) قادر به اتصال به پایگاه داده (JDBC) است. با استفاده از این ویژگی، شما قادر هستید تا به یک پایگاه داده متصل شوید و عملیات‌ مختلفی همچون به روز رسانی (updating)، افزودن داده (inserting) و حذف سوابق (deleting records) را انجام دهید.

اگرچه کیت توسعه نرم‌افزاری جاوا امکان اتصال به پایگاه داده را فراهم می‌کند اما برای اتصال به پایگاه‌های داده‌ی خاص مانند مای‌اس‌کیو‌ال(MySQL) و سرور اس‌کیو‌ال (SQL Server) نیاز به یک افزونه وجود دارد . این افزونه مانند یک درایور (Driver) قادر به ترجمه جاوا برای پایگاه‌های داده است.

در این مقاله جزئیات نحوه اتصال جاوا به یک پایگاه داده‌ی اس‌کیوال را بررسی می‌کنیم و به چند سؤال مهم در این زمینه پاسخ می‌دهیم.

 

درایور دیتابیس مای‌اس‌کیوال 

همانطور که توضیح داده شد، برای اتصال به یک پایگاه داده‌ی مای‌اس‌کیوال، نیاز به یک درایور دارید. این درایور با نام کانکتور جی (Connector/J) شناخته می‌شود و می‌توان آنرا از وبسایت مای‌اس‌کیوال دانلود کرد. (لینک دانلود)

هنگامی که فایل با فرمت زیپ (Zip) یا فرمت (TAR.GZ) را دانلود کردیدآنرا از حالت فشرده خارج کنید و فایل:

mysql-connector-java–bin.jar

را در جای مناسبی ذخیره‌سازی کنید.  این فایل برای اجرای هر کدی  از درایور مای‌اس‌کیو‌ال، مورد استفاده قرار می‌گیرد.

ساخت یک نمونه از پایگاه داده

 

فرض کنید ما یک پایگاه داده مای‌اسکیو‌ال دانلود کرده‌ایم و تمامی تنظیمات آن، برای جای‌گذاری به درستی اعمال شده‌اند. به همین خاطر باید یک نمونه پایگاه داده ایجاد کنیم تا بتوانیم با اتصال به آن عملیات‌های گوناگون را انجام دهیم.

از طریق هر کلاینتی (client) که با آن راحت‌‌تر هستید به پایگاه داده متصل شوید و کد زیر را برای ساخت یک نمونه پایگاه داده وارد کنید.

 

create database sample;

 برای اتصال به پایگاه داده به یک نام کاربری و کلمه عبور نیاز داریم. (البته می‌توانیم با استفاده از ادمینیستریتور (Administrator)  هم به پایگاه داده متصل شویم اما از نظر امنیتی بسیار روش نادرستی است).

از طریق کد زیر می‌توانیم با نام کاربری و رمز عبوری که تعیین می‌کنیم، به پایگاه داده دسترسی داشته باشیم. به جای عبارت تست یوزر (testuser) نام کاربری و به جای عبارت (securepwd) کلمه عبور مورد نظرمان را می‌نویسیم.

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

 اگر  پایگاه داده‌ شما توسط برنامه و یا سرور دیگری در اختیار گرفته شده باشد، باید از کد زیر استفاده کنید (به جای عبارت remotemc  باید نام سرور و یا آدرس آی‌پی آن وارد شود):

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

 اکنون که نام کاربری و کلمه عبور ساخته شده‌اند، ما باید با نمونه پایگاه داده‌ای که قبلا ایجاد کرده‌ایم ارتباط برقرار کنیم:

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

 و اگر نوع ارتباط پایگاه داده از راه دور (Remote) است باید از کد زیر استفاده کنیم:

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

اکنون باید تعیین کنید که با نام کاربری و کلمه عبوری که ایجاد کرده‌اید، روی این پایگاه داده دسترسی ایجاد کنید. شما همچنین می‌توانید دستورات زیر را اجرا کنید تا مطمئن شوید که تمامی دسترسی‌های پایگاه داده کاملا به درستی پایه‌ریزی شده‌اند:

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

مسیر کلاس (Class) جاوا را تعیین کنید

 حال باید جزئیات نحوه اتصال به پایگاه داده مای‌اس‌کیوال را بررسی کنیم. اولین کار، بارگذاری و نصب درایور پایگاه داده است. این کار با استفاده از کد زیر صورت می‌گیرد:

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

این کد می‌تواند یک استثنا (exception) بسازد، به همین خاطر شما می‌توانید آنرا هر طور که می‌خواهید برنامه‌ریزی کنید. (مانند مشاهده و یا حذف پیام‌های خطا برای کاربرد گرافیکی).

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>

اتصال به مای‌اس‌کیوال از طریق جاوا

 حالا که جزئیات نحوه بارگذاری درایور مای‌اس‌کیوال از جاوا را انجام دادیم باید جاوا را به پایگاه داده متصل کنیم. یکی از راه‌های ارتباط جاوا با پایگاه داده استفاده از درایور منیجر (DriverManager) است:

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

اما عبارت (jbcUrl) چیست؟ در کنار این عبارت باید آدرس کامل سرور و پایگاه داده و نام کاربری و کلمه عبور آن گذاشته شود، به طور نمونه عبارت زیر:

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

باید توجه داشته باشید که تمامی مشخصات سرور پایگاه داده باید در این خط ذکر شده باشد، از نام دقیق (ویا آدرس آی‌پی سرور) تا نام کاربری و کلمه عبور. البته برای حفظ امنیت بیشتر باید نام کاربری و کلمه عبور را در فیلدی مجزای از (jbcUrl) وارد کنید که توضیح آن در سطرهای پایین‌تر داده خواهد شد.

از طریق کد زیر می‌توانید از اتصال به پایگاه داده اطمینان کسب کنید:

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!");
}

همانطور که قبلا هم گفته‌ایم بهتر است استفاده از نام کاربری و کلمه عبور در فیلدی مجزای از (jbcUrl) ذکر شود، به همین علت می‌توانید از دستور زیر استفاده کنید:

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

استخراج اطلاعات از پایگاه داده توسط جاوا

 هم اکنون که توانستیم به پایگاه داده متصل شویم می‌توانیم یک نمونه از استخراج اطلاعات را بر روی آن اعمال کنیم:

select version();

استخراج اطلاعات در جاوا به صورت (executeQuery) و و نحوه پاسخ آن به صورت (ResultSet) مشخص می‌شود:

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

با شماره‌گذاری (ResultSet) به عنوان یک متغییر (در اینجا شماره 1) پاسخ آن هم به ترتیب شماره‌ها نمایش داده می‌شود:

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

پس از پردازش اطلاعات استخراج آنها باید متوقف شود:

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

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

 

برگرفته از: makeuseof

 مطالب مرتبط

۱۳ دستور مهم SQL که هر برنامه‌نویس باید بداند
چگونه از حملات نفوذ کننده به SQL جلوگیری کنیم؟
آموزش جامعه SQL Server
روش‌های هوشمندانه برای استفاده از "تلفیق" در SQL
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

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

فرم ارسال نظرات