نقش 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
آیا قیمت بنزین تغییر می‌کند؟
صوت کامل روضه‌خوانی عباس حیدرزاده در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
music_note
صوت کامل روضه‌خوانی عباس حیدرزاده در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
صوت کامل سخنرانی حجت‌الاسلام والمسلمین مهدی اصلانی در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
music_note
صوت کامل سخنرانی حجت‌الاسلام والمسلمین مهدی اصلانی در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
صوت کامل روضه‌خوانی حاج منصور ارضی در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
music_note
صوت کامل روضه‌خوانی حاج منصور ارضی در اولین شب مراسم عزاداری ایام شهادت حضرت فاطمةالزهرا سلام‌الله‌علیها از طرف رهبر معظم انقلاب در زینبیه
انهدام تجهیزات نظامی مزدوران سعودی در «الجوف» یمن
play_arrow
انهدام تجهیزات نظامی مزدوران سعودی در «الجوف» یمن
مسیر شهادت حضرت فاطمه زهرا (س)؛ از سقیفه تا شهادت
مسیر شهادت حضرت فاطمه زهرا (س)؛ از سقیفه تا شهادت