نقش JDBC در برنامه هاي جاوا

امروزه بانک هاي اطلاعاتي مانند Oracle،MySQL، SQL،Server،Access،و غيره ... از جمله ارکان مهم يک نرم افزار کامپيوتري محسوب مي شوند. برنامه نويسان قديمي و با تجربه به خوبي به ياد دارند که در چند دهه گذشته، خود برنامه نويس علاوه بر نوشتن سناريو و کدهاي برنامه، مي بايست بستر ذخيره سازي ديتا را از پايه بنا نهاده و تمامي اطلاعات را ضبط و مديريت مي نمود. اما با گذشت زمان و کثرت اطلاعات و اهميت پردازش داده ها، وظيفه خطير مديريت Data، به طور
يکشنبه، 8 شهريور 1388
تخمین زمان مطالعه:
موارد بیشتر برای شما
نقش JDBC در برنامه هاي جاوا
نقش JDBC در برنامه هاي جاوا
نقش JDBC در برنامه هاي جاوا

نويسنده: محمد صادق گرشاسبي



معرفي ساختار و نحوه استفاده از رابط برنامه نويسي JDBC

مقدمه

امروزه بانک هاي اطلاعاتي مانند Oracle،MySQL، SQL،Server،Access،و غيره ... از جمله ارکان مهم يک نرم افزار کامپيوتري محسوب مي شوند. برنامه نويسان قديمي و با تجربه به خوبي به ياد دارند که در چند دهه گذشته، خود برنامه نويس علاوه بر نوشتن سناريو و کدهاي برنامه، مي بايست بستر ذخيره سازي ديتا را از پايه بنا نهاده و تمامي اطلاعات را ضبط و مديريت مي نمود. اما با گذشت زمان و کثرت اطلاعات و اهميت پردازش داده ها، وظيفه خطير مديريت Data، به طور تخصصي به نرم افزارهاي اين حيطه واگذار شد. در زبان هاي برنامه نويسي مدرن امروزي، برنامه نويس تنها به کار برنامه نويسي پرداخته و فقط با يک پل ارتباطي مانند ODBC،JDBCوامثال آن، بدون کوچکترين دانشي از طريقه عملکرد دروني يک بانک اطلاعاتي، با آن ارتباط برقرار مي کند. برنلامه نويسان جاوا براي ارتباط با Base Data از پل ارتباطي JDBC (Java Data Base Connectivity) استفاده مي کنند، به همين جهت در اين مقاله به بررسي اين پل خواهيم پرداخت.

JDBC چيست؟

JDBC در حقيقت يک رابط برنامه سازي کاربردي (API) است که به برنامه هاي جاوا اجازه اتصال و تبادل اطلاعات با بانک اطلاعاتي را مي دهد، از آنجايي که با وجود JDBC، نيازي به نوشتن برنامه هاي جداگانه براي ارتباط با بانک هاي اطلاعاتي مختلف نيست، بنابراين نبايد نگران تفاوت Data Base ها و ساختار آنها بود. در واقع JDBC تفاوتي بين Oracle و MySQL وجود نداشته و تنها با يک روش مشخص به آنها متصل مي گردد. به همين جهت حتي در صورت تغيير نوع بانک اطلاعاتي يا حتي نوع برنامه (مثلاً از تحت ويندوز به تحت وب) در آينده، مشکلي در کدها به وجود نخواهد آمد.

وظايف JDBC

JDBC بطور کلي وظايف زير را در ارتباط بين يک برنامه نوشته شده با جاوا و بانک اطلاعاتي بر عهده دارد:
*برقراري ارتباط با بانک اطلاعاتي
*ارسال دستورات SQL به بانک
*پردازش و دريافت نتايج برگشتي از بانک
*قطع ارتباط با بانک اطلاعاتي

JDBC APL

JDBCتوسط مجموعه غني APL، تمامي وظايف خود اعم از اجراي دستورات SQL و گرفتن نتايج از بانک را انجام مي دهد. در ضمن اين APL ها به شکل رابط ها و کلاس هاي طراحي شده، به منظور اجراي انتقال دستورات روي پايگاه داده رابطه اي تعبيه شده اند.

JDBC و ODBC

تکنولوژي ODBC يکي ديگر از روش هاي دسترسي به بانک هاي اطلاعاتي مختلف بوده و امکان دسترسي به بيشتر آنها را در محيط هاي مختلف فراهم مي کند. در صورت تمايل به استفاده از ODBC در جاوا، مي توان ازاواسط JDBC-ODBC استفاده نمود.

JDBC Driver

درايورهاي JDBC کلاس هايي هستند که به وسيله بانک هاي اطلاعاتي فراهم گرديده و برنامه هاي جاوا از بين درايورها براي برقراري ارتباط با يک بانک استفاده مي نمايند. ضمناً هر يک از بانک هاي اطلاعاتي، به کمک يک JDBC Driverويژه مورد دستيابي قرار مي گيرد که چهار نمونه از آن در تصوير مشخص است.

JDBC URL

درايور JDBC، براي شناسايي و برقراري ارتباط با بانک اطلاعاتي از JDBC URL استفاده مي کند. ضمناً هر کدام از DataBase هاي موجود در دنيا، يک URLمختص به خود دارند که برخي از آنها در جدول زير قابل رويت است.

نحوه اتصال به بانک اطلاعاتي

براي اتصال به بانک اطلاعاتي، در مرحله اول مي بايست نوع درايور مورد نظر خود را تعيين نماييد:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"),سپس با استفاده از متد()DriverManager.getConnection، يک JDBC URLرا فراخواني کنيد.
=Connection conn
DriverManager.getConnection("jdbc:odbc:MyAccess DataSource"),در طي زمان اجراي() GetConnection ،کلاس DriverManager در مورد قبول شناسايي URL ، از درايور سوال کرده و تنها در صورت تاييد، از آن براي ايجاد Connection استفاده خواهد کرد.
شي Satement و ايجاد پرس و جو
براي ايجاد Statement بايد متد GreateStatementرا از کلاس Connection فراخواني نمود:
Satement stmt=con.CreateStatement
هم اکنون پس از ايجاد شدن يک پرس و جو(Query)، از متد() executeQuery در شي Satement، براي گرفتن داده استفاده مي شود.
(ResultSet rs=stmt.execuletQery(SELECT * FROMP TableName
ضمناً Statement داري متد ديگري به نام() Update excuteاست که براي اجراي عمليات خاصي مانند Delete،Updat،Insertروي بانک اطلاعاتي مورد استفاده قرار مي گيرد.

مثالJDBC

در اين بخش نشان خواهيم داد که چگونه مي توان از طريق JDBC-ODBC به بانک اطلاعاتي متصل شده و يک در خواست پرس و جو (Quesry) را اجرا و نتايج آن را نمايش داد. توجه داشته باشيد که به هنگام استفاده از ODBC، ابتدا بايد يکDSN تعريف نمود که اين کار در سيستم عامل Unix از طريق فايل پيکربندي ODBC.initو در ويندوز از طريق مسير زير قابل دسترس است.
ControlPanel\Administrative\DataSource
براي تعريف DSN جديد، از تب System DSN روي دکمه ADD کليک کرده و سپس در ليست System DataSource ، درايور بانک اطلاعاتي مورد نظر (که مي خواهيد با آن ارتباط برقرار کنيد) را انتخاب نماييد. سپس در قسمت Data Source Name، يک نام دلخواه براي DSN تعيين کرده و با کليک دکمه Select، مسير فايل بانک اطلاعاتي را مشخص کنيد. در نهايت بر روي دکمه OKکليک کرده و پس از انتخاب نام DSNساخته شده در پنجره ODBC ، پنجره را تاييد نماييد.
قطعه کد زير به زبان برنامه نويسي جاوا و بانک اطلاعاتي Access (که داراي جدولي به نام Employeeو سه فيلدPositionوName و Empnoاست) تهيه گرديده که از طريق واسط ODBC-JDBC به بانک مورد نظر متصل شده و يک در خواست پرس و جو را اجرا و نتايج آن را نمايش مي دهد.

importjava.sql.DriverManager
importjava.sql.Connection
importjava.sql.Statment
importjava.sql.SQLException
importjava.sql.SQLException
public class QueryExample {
final Static String driverClass="sun.jdbc.odbc.JdbcOdbcDriver:
final Static String connectionURL=
"jdbc.odbc:MyAccessDataSourse:
Connection con =null
public QueryExample() {
try {
System.out.print("Loading JDBC Drirer->"+driverClass+"\n")
Class.forName(driverlass).newInstance()
System.out.print("Connection to ->"؛(connectionURL+"\n")
this.con=DriverManager,getConnection(connectionURl,userID userPassword)
System.out.print("Connected as ->"+ userID +"\n")} catch (ChassNotFoundException e) {e.printStackTrace()}
catch)]InstantiationExecption(}
catch (SQLExecption e) {؛.printStackTrace()}
public void performQuery() {Statment Stmt = null,
ResultSet = null,
String queryString= "SELECT Empno, Name, Position FROM Employee", try {
System.out.print("Creating Statement...\n")
stmt = con.createStatement ()
System.out.print(" Opening ResultsSet...\n")
rest = stmt.executeQuery(queryString)
int counter = 0
while (rest.next()) {
System.out.println()
System.out.println(" Row [" +++counter + "]")
System.out.println("----------------")
System.out.println(" Name -> " + rest.getString(1))
System.out.println(" Position -> " + rest.getString(2))
System.out.println(" Empno -> " + rest.getfloat(3))
}
System.out.println()
System.out.print("Closing ResultSet...\n")
erst.chose()
System.out.print("Closing Statement...\n")
stmt.close()
} catch (SQLEception e) {
e.printStackTrace()
}
}
public void closeConnection() {
try {
System.out.print("Closing Connection...\n")
con.close()
} catch (SQLException e) {
e.printStackTrace()
}
}
public static void main(String[] args)
throws gava.lang.InterruptedException {
QueryExample qe = new QueryExample()
qe.performQuery()
qe.closeConnection()
}
}

ناگفته نماند که قطعه برنامه فوق را مي توان در يک محيط IDE جاوا وارد کرده و مورد استفاده قرار داد. در پايان اميدواريم که اين مقاله کوتاه، براي برنامه نويسان عزيز مفيد بوده باشد.

منابع:

http://java.sun.com
http://ce.sharif.edu/courses
http://www.haghghounia.com

منبع: ماهنامه دانش و کامپيوتر، شماره 85




نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط
موارد بیشتر برای شما
از محبت تا معرفت: سفری در دنیای معنویت
از محبت تا معرفت: سفری در دنیای معنویت
گل اول شباب الاهلی به النصر توسط سردار آزمون
play_arrow
گل اول شباب الاهلی به النصر توسط سردار آزمون
واکنش جدید نتانیاهو پس از بیانیه یحیی سریع: اقدامات یمن تهدیدی برای نظم جهانی است
play_arrow
واکنش جدید نتانیاهو پس از بیانیه یحیی سریع: اقدامات یمن تهدیدی برای نظم جهانی است
اتفاقاتی در ۱۴۰۰ سال قبل افتاده و گروهی آمدند تا انتقام ۱۴۰۰ سال قبل را از ما مردم شام بگیرند!
play_arrow
اتفاقاتی در ۱۴۰۰ سال قبل افتاده و گروهی آمدند تا انتقام ۱۴۰۰ سال قبل را از ما مردم شام بگیرند!
به رگبار بستن مناره یک مسجد در حال اذان توسط نظامیان اسرائیل
play_arrow
به رگبار بستن مناره یک مسجد در حال اذان توسط نظامیان اسرائیل
تماشای این ۲ گل زیبا در فوتبال زنان را از دست ندهید
play_arrow
تماشای این ۲ گل زیبا در فوتبال زنان را از دست ندهید
اظهارات ضدایرانی مشاور امنیت ملی ترامپ
play_arrow
اظهارات ضدایرانی مشاور امنیت ملی ترامپ
مداحی؛ رسانه تمام‌عیار تبیین
play_arrow
مداحی؛ رسانه تمام‌عیار تبیین
به آتش کشیدن درخت کریسمس در سوریه توسط تحریرالشام
play_arrow
به آتش کشیدن درخت کریسمس در سوریه توسط تحریرالشام
نمای شرکت تسلیحاتی حامی "اسرائیل" قرمز شد
play_arrow
نمای شرکت تسلیحاتی حامی "اسرائیل" قرمز شد
سخنگوی دولت: شاهد کاهش خاموشی‌ها خواهیم بود
play_arrow
سخنگوی دولت: شاهد کاهش خاموشی‌ها خواهیم بود
آمادگی ایران برای بازگشای سفارت در سوریه
play_arrow
آمادگی ایران برای بازگشای سفارت در سوریه
نگاهی به بهترین هتل شیراز از دید کاربران
نگاهی به بهترین هتل شیراز از دید کاربران
تعاریف حدادیان از شناخت رهبر انقلاب از مداحی و هنر
play_arrow
تعاریف حدادیان از شناخت رهبر انقلاب از مداحی و هنر
مهاجرانی: ساعت‌کاری ادارات از ساعت ۸ تا ۱۴ به صورت شناور شد
play_arrow
مهاجرانی: ساعت‌کاری ادارات از ساعت ۸ تا ۱۴ به صورت شناور شد