با وجودی که هسته JDBC API در خود جاوا تعبیه شده است، اما برای اتصال به یک پایگاه داده خاص مثل MySQL یا SQL Server نیاز به یک بخش اضافی تحت عنوان درایور دیتابیس خواهید داشت. این درایور دیتابیس بخشی از نرم افزار است که فراخوانیهای هسته JDBC را به فرمت قابل فهم توسط آن پایگاه داده ترجمه میکند.
در این مقاله ما به جزئیات مربوط به اتصال به یک پایگاه داده MySQL و نحوه اجرای چند کوئری را بررسی خواهیم کرد.
درایور دیتابیس 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 به روش زیر چاپ میکنیم. 1 نشان دهنده ایندکس ستون نتایج به دست آمده است که از 1 شروع میشود:
while ( rset.next()) { System.out.println("Version: " + rset.getString(1)); }
بعد از پردازش نتایج، آبجکت باید بسته شود:
rset.close(); stmt.close();
این مراحلی بود که شما برای اتصال به MySQL از جاوا و انجام یک کوئری ساده باید طی کنید.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟