نحوه استفاده از بانک اطلاعات اکسس در جاوا
«تذکر» قبل از شروع این مقاله بهتر است تا ابتدا نحوه برقراری ارتباط با بانک اطلاعات اکسس در جاوا را که در مقاله شماره 3 مورد بررسی قرار گرفته است را مطالعه نموده و سعی نمایید تا شما نیز با استفاده از روشهای شرح داده شده در مقاله مورد نظر توسط جاوا با بانک اکسس خود، ارتباط برقرار نمایید.
بطور کلی برای کار با بانک اطلاعات کافیست تا نحوه اجرا عبارات sql توسط جاوا را بدانید. آنوقت شما قادر خواهید بود تا هر نوع عملی را در بانک اطلاعات مورد نظر خود توسط زبان جاوا انجام دهید. همانطور که می دانید انواع عبارات sql یا sql statement عبارتند از:
1- SELECT : جهت بازیابی اطلاعات موجود در بانک مورد استفاده قرار می گیرد. مثلا زمان جستجو یک کلید واژه یا در زمان تولید گزارشات
2- INSERT : جهت اضافه رکورد به جداول بانک اطلاعات مورد استفاده قرار می گیرد
3- DELETE : جهت حذف رکوردهای موجود از جداول مورد استفاده قرار می گیرد
4- UPDATE : جهت بروز رسانی مقادیر فعلی رکوردها با مقادیر جدید مورد استفاده قرار می گیرد
5- CREATE : جهت ساختن بانک اطلاعات یا جداول مورد نیاز مورد استفاده قرار می گیرد
«نکته» البته انواع دیگر دستورات sql نیز وجود دارند که ما در این مقاله به آنها نخواهیم پرداخت.
حال فقط کافیست بدانیم که چگونه می توان یک عبارت sql ی را در جاوا اجرا نماییم. برای این منظور مراحل زیر را انجام می دهیم.
1- ایجاد یک شیء statement از طریق شیء connection موجود.
کد:
connection=DriverManager.getConnection(dbURL);
Statement st = connction.createStatment();
2- افزودن عبارت sql ی مورد نظر به شی statement حاصل
کد:
st.executeQuery("select * from student where name='reza' ");
البته شما می توانید عبارت مورد نظرتان را در یک متغیر String قرار داده و متغیر حاصل را به Statement ارسال نمایید:
کد:
String str = "select * from student where name='reza' ";
st.executeQuery(str);
همانطور که مشخص است با اجرای دستور فوق، برنامه یک مجموعه اطلاعات که شامل یک یا چند رکورد است را پس از اجرای query به عنوان نتیجه کار باز خواهد گرداند. پس باید در برنامه محل یا ظرفی را برای ذخیره این مقادیر جهت استفاده در ادامه برنامه ایجاد نماییم. پس کد فوق را بصورت زیر تغییر می دهیم:
کد:
String str = "select * from student where name='reza' ";
ResultSet rs =st.executeQuery(str);
3- استفاده از مقادیر بازیابی شده
حال کافیست بصورت زیر به رکورد های موجود در ResultSet دسترسی یافته و با توجه به سیاست برنامه خود از آنها استفاده نمایید. برای این منظور شیء rs را در یک حلقه با شرط rs.next قرار می دهیم. این حلقه سبب می شود تا از اولین رکورد موجود در rs تا آخرین رکورد آن، یک رکورد یک رکورد به سمت جلو حرکت نماییم. حال فقط کافیست تا در داخل حلقه یکی یکی مقادیر فیلد های موجود در هر رکورد را بدست آورده و در اختیار برنامه قرار دهیم.
کد:
while ( rs.next() ) // this will step through our data row-by-row
{
/* the next line will get the first column in our current row's ResultSet
as a String ( getString( columnNumber) ) and output it to the screen */
System.out.println("Data from column_name: " + rs.getString(1) );
}
در مثال فوق فرض شده است که rs شامل رکورد هایی با یک فیلد ازنوع String یا متنی می باشد.
دقت کنید که برای بازیابی مقادیر فیلدهای موجود، با توجه به نوع آنها از متد مناسب استفاده نمایید. برخی از این متدها عبارتند از:
کد:
1- int getInt (column number or column name )
2- String getString (column number or column name )
3- double getDouble (column number or column name )
«نکته» اگر دستور sql ی مورد نظر از نوع حذف - اضافه یا بروز رسانی رکوردها بود بجای استفاده از متد executeQuery از متد executeUpdate در شیء statement استفاده می نماییم.
کد:
int result = st.executeUpdate("delete * from student where name='ali' ");
if (result == 1)
System.out.print("Deletion Was Successful !");
اکنون برای درک بهتر مطالب قبل، یک نمونه برنامه ساده را مورد بررسی قرار می دهیم. پس از اجرای این برنامه، ابتدا تعداد رکوردهای موجود در جدول std_info را بدست می آورد. سپس یکی به تعداد رکوردهای موجود اضافه کرده و رکوردی با شماره دانش آموزی برابر با این عدد به جدول اضافه می کند. در مرحله بعه کنترل می کند که آیا عملیات ایجاد رکورد جدید در جدول موفقیت آمیز بوده است یا خیر و در نهایت مشخصات دانش آموزان که شامل شماره دانش آموزی، نام، نام خانوادگی و شماره تلفن منزل دانش آموز است، از جدول std_info بازخوانی شده و در خروجی نمایش داده می شود.
کد:
import java.sql.*;
public class jdbc01 {
private static Connection cn;
private static Statement st;
private static ResultSet rs;
public static void main( String [] args) {
int num;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dbURL = "jdbc:odbc:student" ;
cn = DriverManager.getConnection(dbURL, "","");
st = cn.createStatement();
rs = st.executeQuery("select count(*) from std_info");
rs.next();
num=rs.getInt(1)+1;
num = st.executeUpdate("insert into std_info values ("+num+",'first name','lost name',12345678)");
if (num ==1) System.out.println("Insertion was Successful !");
rs = st.executeQuery("select * from std_info");
while(rs.next()){
System.out.println("Student Number: "+rs.getInt(1)+" First Name: "+ rs.getString(2)+" Last Name: "+ rs.getString(3)
+" Home Phone: "+ rs.getString(4));
}
st.close();
cn.close();
} catch (ClassNotFoundException err) {
err.printStackTrace();
} catch (SQLException err) {
err.printStackTrace();
}
}
}