آموزش جاوا - SE پایگاه داده(4) - JDBC و Connection (اتصال) به پایگاه داده

JDBC مجموعه دستورات و مجموعه کلاسهایی است که برای برقراری ارتباط بین زبان جاوا و بانک اطلاعاتی استفاده می شود. برنامه ی جاوا را به سیستم مدیریت بانک اطلاعاتی (Mysql) و سپس به بانک اطلاعاتی خودمان وصل
سه‌شنبه، 3 تير 1393
تخمین زمان مطالعه:
موارد بیشتر برای شما
آموزش جاوا - SE پایگاه داده(4) - JDBC و Connection (اتصال) به پایگاه داده
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده

 

مترجم: حبیب الله علیخانی
منبع:راسخون




 

JDBC (Java Database Connectivity):

JDBC مجموعه دستورات و مجموعه کلاسهایی است که برای برقراری ارتباط بین زبان جاوا و بانک اطلاعاتی استفاده می شود. برنامه ی جاوا را به سیستم مدیریت بانک اطلاعاتی (Mysql) و سپس به بانک اطلاعاتی خودمان وصل می کنیم و در نهایت اطلاعات جداول را می خوانیم و در برنامه نمایش می دهیم و یا در این جداول درج می کنیم.
رابط برنامه کاربردی (API) JDBC به وسیله ی دو بسته تعریف شده است:

Java.Sql.

API ای را برای دستیابی و پردازش داده های ذخیره شده در یک پایگاه داده با استفاده از زبان برنامه نویسی جاوا فراهم می کند. این بسته مهمترین اشیا مورد استفاده مانند Connection ، ResultSet ، Statement و .. و همچنین کلاسها و رابط هایی برای بدست آوردن پایگاه داده و مجموعه نتایج Metadata را از سرور پایگاه داده فراهم می کند. همچنین شامل مجموعه ای از کلاسها و رابط هایی مانند DatabaseMetadata و ResultSetMetadata که با MetaData پایگاه داده سروکار دارد، می شود.

Javax.Sql.

API ای را برای دسترسی به منبع داده سمت سرور(Server_Side) فراهم می کند. این بسته ضمیمه ی Java.Sql می باشد و سرویس هایی را برای J2EE فراهم می کند.
با متد های Java در کلاس های Jdbc (بسته های Java.Sql و Javax.Sql) وارد می شویم و اشیا Jdbc (مانند ResultSet و DatabaseMetadata و ResultSetMetadata ) که نتایج پرس و جوی(Query) را نمایش می دهد، برمی گردانید.
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
هسته ی کلاس های JDBC ، واسط‌ها و استثناهای بسته ی Java.Sql

DriverManager.(مدیر درایور)

این کلاس درایور های JDBC را در حافظه بارگذاری می کند و برای ساختن Java.Sql.Connection در پایگاه داده هایی از قبیل اراکل و MySql استفاده می شود.

Connection. (اتصال)

این واسط یک اتصال با پایگاه داده را نشان می دهد که اگر MYSQL باشد روی پورت 3306 و اگر اراکل باشد ، روی پورت 1521 می باشد. کانکشن لوله ای ایجاد می کند که به دیتابیس وصل می کند.

DatabaseMetaData.

این واسط اطلاعاتی در مورد پایگاه داده را فراهم می کند. شی Connection (اتصال) برای ساختن اشیا DatabaseMetaData استفاده می شود.

Statement.

این واسط یک عبارت SQL را نشان می دهد و می تواند برای بازیابی اشیا ResultSet مورد استفاده قرار می گیرد. از طریق لوله ای که ایجاد شده، وارد دیتابیس می شود و یک سری کارهایی انجام می دهد و دستورات SQL را اجرا می کند.

PreparedStatement.

این واسط دستورات را توسعه می دهد و دستورات SQL را نمایش می دهد و می تواند شی ResultSet را بازیابی کند.

CallableStatement.

این واسط رویه (procedure) ذخیره شده یک پایگاه داده را نشان می دهد و همچنین می تواند رویه های ذخیره شده ی روی سرور پایگاه داده را اجرا کند.

ResultSet.

این واسط مجموعه نتایج پایگاه داده را که با استفاده از دستور SELECT ایجاد شده، نمایش می دهد.
Statement، PreparedStatement، CallableStatement و سایر اشیا JDBC می توانند اشیا ResultSet را بسازند.

ResultSetMetaData•

اين واسط اطلاعاتي را درباره انواع و مشخصات ستونها در شئ ResultSet فراهم می كند.

SQL Exception•

اين كلاس يك كلاس استثنا است كه اطلاعاتي را درباره خطاهاي دستيابي به پايگاه داده و ساير خطاها مهيا مي كند.
برای برنامه نویسی بانک اطلاعاتی باید به صورت زیر عمل کرد:

درایور یا کانکتور و یا همان jar فایل ها :

اپلیکیشن های جاوا باید از یک سری ساختارهای داخلی تشکیل شود تا بتواند به دیتابیس وصل شود. به همین دلیل درایور یا کانکتور و یا همان jar فایل ها به پروژه اضافه می شوند که در آنها کلاسهایی پیاده سازی شده تا بتواند جاوا را به بانک اطلاعاتی وصل کند. البته اگر محیط توسعه ای که استفاده می کنیم غیر از netbeans باشد و یا netbeans باشد ولی ورژن آن کمتر از 6 باشد، باید این jar فایل ها را دانلود کنیم و به پروژه اضافه کنیم.
این jar فایل ها شامل چند فایل است. (مثل jar و zip) که از سایت تولید کننده ی آن بانک قابل دانلود است. jar فایل ها ی که ما برای اتصال mysql به جاوا استفاده می کنیم، aspectjrt-1.5.4.jar و mysql-connector-java-5.0.0.jar می باشند.
شاخه libraries برای تعریف کلاس کتابخانه ها که در پروژه استفاده می شود می باشد. اگر نیاز دارید که از کتابخانه ها و کلاسهای یک پروژه خارجی استفاده کنید می توانید آن را زیر شاخه ی کتابخانه اضافه کنید.

اضافه کردن JAR فایل ها به پروژه :

معرفی دو jar فایل در قالب یک libraries به netbeans
ابتدا از منوی tools گزینه ی libraries را انتخاب می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
از صفحه باز شده گزینه ی New Library… را انتخاب می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
یک نام به آن اختصاص می دهیم مثلا MySQL_JarFiles و به Class Libraries اضافه می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
که به پنجره سمت چپ اضافه می شود.
روی آن کلیک می کنیم و از سمت راست گزینه ی Add Jar/Folder… را انتخاب می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
و دو Jar file ای که می خواهیم اضافه کنیم را انتخاب می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
وقتی مرحله قبل انجام شد این دو Jar file به صورت زیر مشاهده می شود ، بعد ok می کنیم تا ساخته شود :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده

اضافه کردن library ساخته شده به پروژه

پروژه ای به نام database داریم. روی نام پروژه کلیک راست کرده و گزینه ی properties را انتخاب می کنیم .
در صفحه باز شده از شاخه Libraries گزینه ی Add Library… را انتخاب می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
در لیست باز شده MySQL_jarFiles را که در قبل ساخته بودید را انتخاب می کنیم و گزینه ی Add Libraries… را کلیک می کنیم (اگر نبود import را می زنیم و وارد می کنیم):
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
این صفحه را هم ok می کنیم :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
می بینیم که در شاخه ی Libraries این دو JarFile اضافه شده :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
برای هر پروژه ای که می خواهیم می توانیم این library را ایجاد کنیم. بعد از اینکه Jar فایل ها را وارد کردیم، مراحل زیر را انجام می دهیم: (پروژه ای به نام database داریم و در آن کلاسی به نام Tester می سازیم و پایگاه داده ای به نام db1 و در آن جدولی به نام student از طریق نرم افزار MYSQL Administrator ایجاد کردیم و همچنین از طریق نرم افزار MYSQL Query Browser به جدول student اطلاعات وارد کرده ایم. نحوه ی این کار را در بخش های مربوطه آموزش داده شده)

1- ابتدا باید بسته های لازم را وارد کرد.

قبل از اینکه از درایور JDBC استفاده کنیم و یک کانکشن را بکار ببریم، باید بسته های مربوطه را وارد کنیم. مانند:
Import java.sql.*;
البته Netbeans به طور خودکار(با دادن پیغام) آنها را وارد می کند.

2- درایور های JDBC را باید وارد کرد.

به طور کلی زمانیکه خواستیم از درایور استفاده کنیم از فرمان Class.forName استفاده می کنیم. این یک لودر کلاس است.
پس ابتدا باید کلاس درایور اصلی در JVM به صورت زیر لود شود(به حروف بزرگ و کوچک بودن آنها دقت کنید) :
Class.forName("com.mysql.jdbc.Driver");
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
در مسیر بالا کلاسی به نام کلاس درایور داریم. از جاوا 6 به بعد یا JDBC ورژن 4 به بعد نیازی به نوشتن این خط دستور نیست. اما این کار اصولی است.
سپس برای آن یک نمونه (instance) می سازیم:
Class.forName("com.mysql.jdbc.Driver").newInstance();
البته این درایورJDBC برای MySQL می باشد و برای درایور JDBC اراکل(oracle) از دستور زیر استفاده می کنیم:
Class.forName("oracle.jdbc.driver.OracleDriver");
این درایور باید واسط Java.sql.driver را اجرا کند و یک کلاس که کار آن مقدار دهی اولیه می باشد و در داخل کلاس Com.mysql.Jdbc.driver قرار دارد، درایور را با کلاس Java.Sql.DriverManager رجیستر می کند.
زمانیکه یک درایور JDBC لود می شود باید مطمئن شویم که درایور API پایگاه داده مشخص شده (Jar فایل) در متغییر محیطی CLASSPATH وجود داشته باشد.

3- اتصال (connection) به پایگاه داده را باید باز کنیم.

اکنون باید از ارتباط دهنده استفاده کنیم. این ارتباط دهنده در کلاس کانکشن می باشد . این ارتباط دهنده یک اینترفیس می باشد. اگر ما در ابتدا Import java.sql.*; را وارد کنیم، فقط اینترفیس کانکشن مورد نظر را پیشنهاد می کند.
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
DriverManager کلاسی است که به طو ر اتوماتیک به خط Class.forName اشاره می کند و درایور را می سازد و یک کانکشن ایجاد می کند و در متغییری به نام con می ریزد ولی به عنوان ورودی سازنده یک متغییر به نام url از جنس string می خواهد، که کد رشته ی ارتباطی می باشد.
Connection con = DriverManager.getConnection(url);
که شامل نام کاربری (user name) و رمز عبور (password) و شماره پورت mysql (که استاندارد آن 3306 می باشد) می باشد. پس قبل از کد بالا باید خط زیر را بنویسیم:
String url="jdbc:mysql://localhost:3306/db1?user=root&password=123";
نام سرور، localhost (همان کامپیوتر خودمان) می باشد.
می توانیم شماره پورت 3306 را نیاوریم. این شماره به صورت پیشفرض است و اگر کسی آن را در مراحل نصب mysql ، تغییر داد، باید آن را اینجا وارد کند.
نام پایگاه داده که قبلا ایجاد کردیم، db1 می باشد.
نام کاربری آن، root می باشد و پسورد این پایگاه داده 123 می باشد که این را هنگام نصب mysql تعیین کرده ایم.
اکنون کانکشن برقرار شد و نیازی نیست con را open کنیم اما برای بسته شدن آن باید close کنیم.

4- اشیا Statement، PreparedStatement و CallableStatement را بسازیم.

تا مرحله ی قبل ارتباط دهنده برقرار شد اکنون سراغ فرمان دهنده می رویم. فرمان دهنده دستور statement است و ارتباط دهنده con است. با دستور زیر ارتباط دهنده ، فرمان دهنده را آماده می کند:
Statement st= con.createStatement();
سپس با st کارهایمان را انجام می دهیم و انواع execute را انجام دهیم.

5- پرسجوی SQL را اجرا کنیم و شی ResultSet را برگرداند.

اگر execute ساده انجام دهیم، یک بولین برمی گرداند که می گوید که موفق بوده یا نه. اما اگر executeQuery انجام دهد، نتیجه را در resultset برمی گرداند. Resultset مجموعه ای از نتایج است که یک سطر را نمایش می دهد. به عنوان مثال
st.executeQuery("select * from student");

6- شی ResultSet را پردازش کند.
7- اشیا ResultSet و Statment را ببندیم.

rs.close();
st.close();

8- اتصال (Connection) را ببندیم و ارتباط را قطع کنیم.

con.close();
قبل از کد نویسی، از Try/Catch استفاده می کنیم و در قسمت catch دستور زیر را وارد می کنیم:
System.err.println(ex.getMessage());
بجای System.out.println دستور System.err.println را وارد کردیم تا خروجی به رنگ قرمز چاپ شود. که اگر در Try/catch خواستیم چاپ کنیم) که در واقع خطا می باشد( به رنگ قرمز چاپ شود.
به عنون مثال، اگر نام پایگاه داده را اشتباه تایپ کنیم، خطای زیر به رنگ قرمز چاپ می شود :
آموزش جاوا  - SE پایگاه داده(4) -  JDBC  و Connection (اتصال) به پایگاه داده
دستورات این پروژه به صورت زیر می باشد:

1 package first;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 import java.sql.ResultSet;
5 import java.sql.Statement;
6 public class Tester {
7
8 public static void main(String[] args) {
9
10 try {
11
12 Class.forName("com.mysql.jdbc.Driver").newInstance();
13 String url= "jdbc:mysql://localhost:3306/db1?user=root&password=123";
14 Connection con=DriverManager.getConnection(url);
15 Statement st = con.createStatement();
16 st.executeQuery("select * from student");
17 ResultSet rs= st.getResultSet();
18
19 rs.close();
20 st.close();
21 con.close();
22
23 } catch (Exception ex) {
24 System.err.println(ex.getMessage());
25 }
26
27 }
28 }

مبحث Resultset را در بخشی دیگر ارائه می کنیم.
استفاده از مطالب این مقاله با ذکر منبع راسخون بلامانع می باشد.



 

 



مقالات مرتبط
نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.