1 ث للها ؽو ا ١ؽو ا ةدمرب دعاوق تانايبلا افادلاب Database in java ظ اوث ا Database وجزؼر أ هكب فل ا ١غ وج دبوو ا ظ اوث( ١غ وج ا ١ج بؾ ظ اوث هاكا ).. ب يبجلا بػ الع ه ن ػ ١غ وج ا أ ا وهل٠ ١ف١و بؼز ا ب ؼ ػ ظ اوث ا ؼ١ ز ٠ ب لاف وأ... ١ؼ ا سلؾز ١ ا ػ و ب ك ؼز٠ غ وجث دبم١ج ر لػا ل دب ب١ج ا بفبغث ى غجز م٠و ل٠لع ػو Intractive هل ا لالث ػو هل ا و لؽا ى ث و١جو ب ثه غ١ ز ٠ ءو ا زئاول أ ف ى ث.. ل١ع ع ا تزى١ لػ دب ع زؾز و ب ػ ض أ ػو ع ب ان ع ا غ وج ا نوؾز م ا وفأ لاا يبؽ بو غثبز ا ع عب ز ا م١ج ر لاث وب ظأ ه ر م٠و ا فأ ب ف ١ؼثبز ب لأ نوؾز ف قث ا ءب للها.. وف ا ب ٠أ ٠ب ع ا ى١ نب ع و لأ غثبز ع ا ػ لػبل بو ب ثه ظ ب وجث لاض ( بفبع ظ ب وث ١ ك فرا أ ظ ب وث لػبم دب ب١ث يوو هبغر أ أ ) و١غ يبض ىز ذؾر او ا ءب ا.. للها ألج ١ ا ش٠لؾ بث ؼث دب١ ب لأا لقز لػبل دب ب١ث وأ MS-Access يبض و زؽ اما ب ف دب١ ب لأا غ١ ز ب ١ؽ و١١غر لػبم ا لقز أ لػبل وفأ ب و١١غز ا ظ ب وث بفبع ف ى٠ ٠و! مف ١ ا ءب ا للها ى١ ع ا.. ي لأا
ؽ ج ا ال إ إ ال ػ ١ ر و ذ ه ة ا ؼ و ؽ ج ب اهلل ١ ؤر ١ ب اهلل ف إ ب إ اهلل هاغج ا ؼ ظ ١ مل : =-=-=-= ن ل ه أ ي ق عبفب JDK 1.1 رؾز ػ API ي ا زؼب غ ل اػل ا ج ١ ب بد ا ؼالئم ١ ن ايAPI ر Java Database Connectivity أفز بها. JDBC ن ايAPI ر زقل زؼب غ ل اػل ا ج ١ ب بد ا قز ف ى ا ى ا وئ ١ ١ رى ف أ و ٠ قز ف DBMS كاف ١ ب األفو ث ؼ أ ى Format فب ث API فب ف ١ رقز ف ػ ثم ١ ل اػل ا ج ١ ب بد األفو. DBMS أو ٠ قز ف ػ MySql رقز ف ثل ه ب ػ.. Oracle ن ه اع ذ SUN ن ا ى م ه ثغؼ ٠ زؾلس JDBC ث غ ؽل ى ف ٠ زؾلس ا "١ " Bridge نا ا ١ فب ى ٠ ف DB ٠ ؼوف و ١ ف ٠ زؼب غ ايDB أ أ ٠ م ث بػ لبػل ا ج ١ ب بد ٠ م DBMS Vendor ثؼ ١ فال ر ز ١ غ ثب زقلا JDBC ا زؼب ؼ.. ثب جغ فئ و ن ايBridga فب ثب مبػل ف ب ى لبػل ١ فب ف ١ ٠ غت أ رم ثزؾ ١ لغ بؽت ايBase. Data ث ؼ أ ه فالي ثو ب ظ ا غبفب ػ ل ب ر ك اإلر بي غ لبػل ث ١ ب بد أل وب ٠ غت أ ٠ ز فو بن Bridge ر فو ن ا غ زم أ ذ ثبػ بئ رؼ ١ بد ٠ م JDBC API نا ا Bridge ثف ب رؾ ٠ ب ا غ رف ب لبػل ا ج ١ ب بد ا ؼ ١.. ع ١ ن ايBridge ر Driver أ ث ؼ ١ فم ٠ ف أ ا و ه ٠ م ثزؾ ٠ ب ا ى رف لبػل ا ج ١ ب بد.. وو ب ٠ ىو فذ لل ؽ ذ لل ٠ ب ) لج عبفب( ن ا ى The Vendor Variation. ODBC أفز بها Open Database Connectivity لج م ه ثب زقل Problem وب ذ أ ٠ فو DBMS Vendor ODBC Driver ى ٠ ز ١ غ زقل ١ ٠ ل ى ا ي ا زؼب غ لبػل ا ج ١ ب بد.. 2
3 ب ذ بل sun ؼث Driver ان ODBC لاف غ١ ز ر بؼز ا غ أ لػبل دب ب١ث طبز ا ى١ زؽ أ لػبل دب ب١ث لا لع ٠ ب Driver ب و.. دأول ى ه١ ػ ظؽلا أ القز ا JDBC-ODBC Driver مف وغ ثوغز ا أ ب ل ػ لا وف ز٠ Driver لػبم مف و١غ ه م بف دبم١ج ز ا ٠هبغز ا تغ٠ أ لقز ر Driver لػبم فأ JDBC-ODBC Driver تج ا ه أ ىز ه ؾ ئ١ث ى ل ٠.. مف ب ثه لاى ا لاػأ و١غ ف ى لا ك مر ب و لمز لا١ ل ب و فز او١ضو ب ىر ؼز غ وج ا ب رب٠وظ مف و ز أ. ئاوم ا لقز ن غ ا لػبل دب ب١ث وأ ف لقز JDBC-ODBC Driver ى بؼز غ لػبم ا ى ب ئاك يبؽ بؼز ا غ ODBC تغ٠ أ م ؼث ODBC ( Data Source يلاف ؽ ىؾز ا ه٠ل ىب غ ا ب و و لؼث ) ١ ل ب ٠أ نفؤ يبض ١ ث ١غ ز ي أ لػبل دب ب١ث ف ؼ٠ ب ا ءاك ا console لمز مبث بؼر ال٠ ه ال٠ ه ظؽلا و١فأ غ Structure Query Langauge اهب زفأ SQL غ ؼ ر ه بؼز بث غ لػبل يبفكا( دب ب١ج ا دب ب١ث ءب ا ي الع لاؼز ا ػ ١ل. ) ب هك ١ ج ا ن ف ػو ؼث و ا لاا ١ ب لأا ع ا ه ن لا ت زر ه٠ل فوؼ ب ث ى بؼج إ دكهأ فاوزؽلأا بف دبم١ج ر لػا ل دب ب١ج ا تغ٠ أ ر و١غ ىث و١جو ن.. غ ا بم ن : غ ا )1 ءب ا لػبل دب ب١ث وأ )2 ػ ODBC Data Source دا ف)3 يب رلأا غ لػبل دب ب١ج ا )4 ١غ ر ي أ يبض يب رلأ لػبم بث يبفكا دب ب١ث
4 ألج ػ ووث للها ءب ا لػبل دب ب١ث وأ =-=-=-=-=-=-=-=-=-=-= نب و١ضى ا داهال ا وأ ى لا فقر ؼ١ غف غ١ ز ر بؼز ا ؼ م لأا ؼث لػبل دب ب١ث هل School زؾر ن لػبم ا ػ لػ يا لع نرب لأا ةلا ا دبثب ؾ ا و١ضى ا ب١ بؽ ف يوو ػ ي لع لؽا لػبم ا ١ ػ.. غ١ غ ا وونر( ن هل ا ثه لػبل دب ب١ج ا بفبغث ١ لم ١ ر لػا ل.. )!دب ب١ج ا ل ؼزفث لػبل دب ب١ث وأ ئبل file new وزفأ ص ػ tapيا ١ ١ ا وزفأ لػبل دب ب١ث غهبف. Blank Database ص طوقر نفب ل ثبزىث ا لػبم دب ب١ج ا ى١ School ص. create وزفأ لأا create table in Desing View وزفأ ى ئ ر ي لغ ا ل ؼث ي مؾ ا ١ بز ا ب ؼ١ ع ب ؼعا text ص ل ؼث save ه ؤ ١ ػ ا لػبم دب ب١ج ا فكأ Student ص ه ؤ ١ ػ ك ر ءب ا ػبزف ب أ جعأ لاث no بؼج ض انى ي لع ١ ر لػبم ا وجزؼ٠ ئ بف ب ى غ١ ز ىؾز ا ن ث ١ ؼ ا ظ ب وج ا أ ب أ ى ٠ أ لػبل دب ب١ث و١غ أ لا( دبللاػ ػبزف ب أ لا ػبزف )ت٠وغ ب ى ٠ ظ ب وج ا ػ و ء ل٠و ىؾز ا. يبفكبث ١ل لػ ب بفكا وػ ب.. ل٠و
أكف ػ ا غل ي و أفو ثب غ ػ ور ١ double click ص أكف أ ث ١ ب بد : األ اغ ك ا غل ي أغ ك ا مبػل أغ ك Access أ ٠ ب.. ىنا أ ز ١ ب ا وؽ األ ا بء لبػل ث ١ ب بد أو.. ) جؼب أغ ت األػ بء ػ ػ ث ب ى ؽج ١ ذ أػو ا ق اد ى أرنوو ى ا مبػل ل ١ ال أل ى أرؼب ؼ ب ثبال بف ا أ هث ب أؽل األػ بء عل ٠ ل ثب غبي ال ٠ ؼ ء ػ لبػل ا ج ١ ب بد (. ػ ODBC Data Source =-=-=-=-=-=-=-=-=-=-= األ ثؼل ب ل ب ثؼ ا مبػل ٠ غت School أ م ثز غ ١ ب نSource ODBC Data ثب زب ر ز ١ غ ا ي مبػل ػ و ٠ ك األ ا ن ل ب ثز غ ١ ث ب ربثغ ا ق اد ا زب ١ ى م ثز غ ١ ب ل فالي ؽ ا زؾى Control Panel ثفزؼ Administrative Tools ص أفزو Data )Sources (ODBC زظ و ه ن ا بفن ف ٠ ى ث ب أ بء ل اػل ث ١ ب بد بثم غ ذ نODBC ل ذ أ ذ ث ب أ أ زقل ب ثو ب ظ ب ا ل ثب غ ػ ىه Add ف ايtap ا ةDSN User )أ ي ربة( ا مبئ ا غل ٠ ل أفزو Driver do Microsoft Access و ب ؼ ف ا ه أػال ص أفزو Finsih جب و ف رظ و ه ا ه ا زب ١ ى رؾلك ايDataBase ا ز ل ذ ثؼ ب أفزو select ص ؽلك ىب لبػل ا ج ١ ب بد ا ز أ ؤر ب ػبك ثب ى األفزوا رى لبػل ث ١ ب بد أو ع ك ف غ ل. Mydocuments ثؼل أ رقزبه ا مبػل ر غ OK ف رظ و ه ا بفن ا بثم أوزت ف DSN ا ا مبػل Description أ أ أفو ي ب ى ٠ ف ف ا ا مبػل ( فب )أ School وػ ػ ا مبػل ؾزبع ب أ ٠ ب ر ز ١ غ ػ ا زقل و و ه أهكد م ه فالي Advanced Option غ ب رو ٠ ل ى كػ ب األ ل ث ب ف رغوثزه ا ضب ١ ص ا غ OK زوعغ أل ي بفن زغل أأل ا ن وزجز ع ك ف ا بفن ف ا ز ف افزو OK إل بء.. 5
ف اد األر بي غ لبػل ا ج ١ ب بد =-=--=-=-=-=-=-=-=-=-=-=-= ا زؼب غ لبػل ا ج ١ ب بد ف عبفب ٠ ؾ و ف ا ىبئ بد ا زب ١ : Connection Statment ResultSetMetaData ResultSet فم.. ف ا ؾم ١ م ن ا ىبئ بد ػجبه ػ. implmenet it ر زقل ب ثز ج ١ م ب ا ز رم ايDriver interface اما للتعامل مع قاعده البيانات سوف نحتاج الى 7 خطوات : 1( رؾ ١ ايDriver 2( ػ ار بي غ لبػل ا ج ١ ب بد 3( ا زقلا Connection ؾ ي ػ Statment 4( فالي Statament ر ز ١ غ اال زؼال ا مبػل أ اكفبي ث ١ ب بد مبػل 5( ف ؽبي ا زؼ ذ ا مبػل ا برظ ف ٠ ى ٠ ؾز ResultSet ػ ا ز ١ غ أ ب و ذ أكف ذ ث ١ ب بد )رؼل ٠ اكفبي ؽنف( فب برظ ػلك ا ه ا ز رؤصود ثب ؼ ١ 6( ووه ا ق اد 5 4 ز أهكد م ه..)ا زؼال أ رؼل ٠ (. 7( أغ ك األر بي close 6
7 ألج ػو ث دا ق ا ى ث ج لا أ ١ ؾر.. Driverيا ى ت غر ان Driverيا تغ٠ أ و١ ر ا ؼل ه٠ل ب ث أ ى لػبل دب ب١ث Driver بف ب ث اما ى لػبل دب ب١ث غل Driver ف زق٠ ػ.. وفلأا ب ث ب أ بؼز لأا غ لػبل دب ب١ث وأ لقز JDBC-ODBC Driver غل ف ان Driverيا : ى٠ sun.jdbc.odbc.jdbcodbcdriver ب و دووم و لػبل دب ب١ث ب ٠ل غل Driver ف زق٠ ػ وفلأا ل ب ان ا ءب للها دب غ ا كبم ا ب ل ػ لقز MySql أ.. Sqlite ب١ بؽ ى ت غ ان Driverيا م القز بث ال ا forname ك ع ا لاى ا ن ( Class ال ا static ؼ ث ه أ غ١ ز ر ب ئال و١غ ػ ئبو : ) لاى ا Class.forName("sun.jdbc.odbc.JdbcOdbcDriver ); ق ا ١ بض ا ػ يب رلأا غ لػبم ا ه م يلاف ال ا getconnection ك ع ا لاى ا ن ( DriverManager ال ا static )ب ٠ا جمز ر صلاص ١ل ١م ا لأا ا ػ لػبم دب ب١ج ا URL ١ بض ا ا لقز ا ش بض ا و وونر( ه و ا ؾ غ ا لقز و ه و لاا ب زؼ لاف لا فقر لع ر وب.. ) ل٠لؾر URLيا لػبم بث ى٠ ى بث : بز ا jdbc:<sub-protocol>:<data-source>
ثل األل ا ا غ ١ و jdbc ن صبثز رؼ أ ب زقل sub-protocol JDBC API زؾل ٠ ل ايDriver - ػ - ايdataSource زؾل ٠ ل ا ا مبػل به ب هل ا ج هد datasource ر ت م ه... ؾ ؽب ١ ب زؼب غ ١ ى odbc sub-protocol أ ب ف ٠ ى School أل ب غ ب ا مبػل لج ل ١ ث نا األ ف ODBC Data Source موو ب أ ٠ ف أ غ األ ث ف ا ا مبػل ف ؽبي ل ذ ثز غ ١ ثب قز ف غ األ ب.. ث نا ٠ ى ل ٠ ب URL ثب ى ا زب : jdbc:odbc:school ٠ ى و األر بي ث نا ا ى : connection = DriverManager.getConnection("jdbc:odbc:School;)""""" connection وبئ Connection ) ف أ زقل و ٠ م ا ز ١ ز ١ ؼ ن ٠ ؼ ا ا ىبئ ف ا ا ىال فم ا ؾوف األ ي ؽوف غ ١ و(.. ا لغ : م ه رؾلك أ ف ١ غت أفو ١ وفو ثؼ ١ ل ىب ف ع ك ا ج ١ ب بد لبػل وب ذ اما connection = DriverManager.getConnection("jdbc:odbc://AnyServer.File.com/School ;)""""" : connection ا ضب ض ا ق ال بء Statement ا ىبئ فالي statement = connection.createstatement;)( 8
ا ق ا واثؼ زؼب غ ا مبػل اء ثبكفبي ث ١ ب بد أ األ زؼال ػ ا ج ١ ب بد ب ف زقل غ.. SQL ا زؼب ٠ ى غ ا ىبئ statement ف ١ و ٠ مز ١ ( كا ز ١ ( األ ي أل زؼال executequery ا ضب ١ زؼل ٠ ( ا بف ؽنفرؼل ٠ ( executeupdate ن ا لا ز ١ ر زمج string ف ١ و ك SQL ؼ ١ ا ز رو ٠ ل.. ضال و ٠ ل رؾل ٠ ل ع ١ غ ا ف ف ف ا غل ي Student ٠ ى ل أ و ايSQL ا زب : SELECT * FROM Student ) جؼب ٠ ى وزبث اال ا و ثبألؽوف ا ىج ١ و أ ا غ ١ و ال ٠ فوق not case sensitive ى أف ا ىج ١ و Captial Letter أرؾلس ب ػ أ ا و SQL فم ى ا ا غل ي أ بء ا ؾم ي ٠ غت أ رى بثم ر ب ب اال ف ف ٠ ؾ ) Exception. أ ٠ ب ف غ و ك SQL ف زغ ١ و string ص ر و ٠ و نا ا زغ ١ و لا ثلال وزبث األ و جب و ف ا لا.. ا مبػل : األ زؼال ػ ضبي String select = "SELECT * FROM Student; " ResultSet resultset = statement.executequery(select;) 9
String select = "SELECT number,firstname FROM Student; " ResultSet resultset = statement.executequery(select;) String select = "SELECT firstname FROM+ " " WHERE number >= 10+ " " AND number <=100+ " " ORDER BY number DESC; " ResultSet resultset = statement.executequery(select;) String select = "SELECT * FROM Student WHERE firstname ='wajdy;"' ResultSet resultset = statement.executequery(select;) ن و ب أ ض ػ األ زؼال ا مبػل ثب زقلا executequery ٠ ى ٠ ؾز ResultSet ػ ز ١ غ األ زؼال.. ا لا ف ا برظ ا ىبئ ٠ ؾز ResultSet ػ و ١ وج ١ و ا ل اي ى ر زقوط ا برظ األ زؼال ػ ا ؼ ؽب ١ ب ف زؼب غ ا لا next رقوط ا و ا زب برظ اإل زؼال ا قي ف ResultSet )ث ؼ أ ا برظ ا ع ك ف resultset ه و 10
و ٠ ؾز ػ ا ؼ بد ض لبػل ا ج ١ ب بد ثب ج ى ػ ١ ه الؽظ أ ػلك ا ه لل ٠ قز ف ب غ لبػل ا ج ١ ب بد ضال ا زؼ ذ ػ ب ت ثول ب ا برظ ف ؽبي عل ب ت ث نا ا ول و اؽل ضال أ زؼ ذ ػ ع ١ غ ا الة فب برظ ف ResultSet ف ػلك ا ه ا ع ك ف ا مبػل (. م أفو أ ا ىبئ ResultSet )ا ن ٠ ؾز ػ ا ه ا برغ األ زؼال ) ٠ جلأ ا و ب لج األ ي أ أ ب ٠ غت أ زلػ ا لا next لج ا ي أل ل ١ ع ك ف ا و ( ؽز ى ف ا و األ ي(.. ن ا لا روعغ ل ١ م ١ true false ث بء ػ ٠ عل و رب أ أل.. األ ى م ١ ؼ ١ ف و زقل ا لا getxxx ن ا لا ب ى ١ Overloading األ ي ٠ زمج ٠ ض Index هل ا ؾم ف ا مبػل - ٠ جلأ ا زول ١ 1- أ ب ا ى ا ضب ف ١ زمج ٠ ض String ا ا ؾم ف ا مبػل.. int getint (String <columnname)> int getint (int <columnindex)> String getstring (String <columnname)> String getstring (int <columnindex)> ىذه الدوال : XXX بن أل اع ا زغ ١ واد.. Double,Flaot,Date ا ج ١ ب بد ا ن رو ٠ ل.. األفو غ ١ و فم ث ع 11
األستعالم : من الناتح معالدو كيفيو على مثال while ( resultset.next) )( System.out.printf("%-8s\t",resultSet.getString(1;)) System.out.printf("%-8s\t",resultSet.getString(2;)) System.out.printf("%-8s\t",resultSet.getString(3;)) System.out.printf("%-8s\t",resultSet.getString(4;)) System.out.println;)( ب الؽظ أ ب ل ب ثؼ ؽ م ) ف ر و ػ ع ١ غ ا ه ا ع ك ف ResultSet ا أ ب ٠ ر جؼ ل ١ Next فب ئ (. كاف ع ا لا ا زقل ب ا لا getstring ثب ق ا ز ر زمج هل ايindex ( رنوو رجلأ 1(.. و و جغ ا ؾم األ ي ا ضب ا ضب ش ا واثغ.. ص جغ و فبهؽ.. ٠ ى أ رالؽظ أ زقلا ا لا printf ثلال println فم ز ظ ١ فم ال أوضو ) ج ١ ةprintf ف غ ا ١ ير ب رى ف ا بف زغ ١ واد ل ١ صبثز ف ىب اؽل ص رم ف ١ ب ثؼل ثزؾل ٠ ل ا زغ ١ واد(.. اما رؼغجه ٠ ى ه أ رغ ١ و ب ا printf ر جغ ا برظ ا لا ( getstring ١ ػ ب printf األ ػ ب أموو رؼ ف JDK 5 ب ف ق(.. ػ ا ؾم ضبي ا ر وه ا لا ا ضب ا ى ر زقل أ ٠ ى ا ؾم األ ي : 12
System.out.println( resultset.getstring("number;) )" ىنا جم ١ ا ؾم ي -ر زقل األ ى ث ف ا ؾو ف ثب ج - األ رىوه ن ا ق اد و ب رو ٠ ل ى ر زؼ ا مبػل.. نا ثب ج إل زؼال ا مبػل ؤر األ ى ١ ف ١ األكفبي أ ا زؼل ٠ أ ا ؾنف لبػل ا ج ١ ب بد.. م ه ثب زقل ا لا. executeupdate ثب زقلا أ ا و SQL ا ب ج ا ؾ األ األ ض ا مبك ؼ ١ بد اإل بف ا زؼل ٠ ا ؾنف : String insert = "INSERT INTO Student VALUES('123','Wajdy','Essam','34242424; ")' int result = statement.executeupdate(insert;) String update = "UPDATE Student SET firstname='ahmed' lastname = 'omer+ "' " WHERE number='1; "' statement.executeupdate(update;) String delete = "DELETE FROM Student WHERE number > 100; " int result = statement.executeupdate(delete;) 13
ثوعبء الؽظ أ أ ل ١ string كاف نا ايstring ٠ غت أ رؾب ة ' ' ٠ غت أ رزؤول ب ؽز ال رمغ ف بو.. أف ١ وا اغالق اإلر بي غ ا مبػل ب رم ثغ ك ايconnection ايstatement رغ ك ايStatement ف األ ي ثؼل ب رغ ك اإلر بي : statement.close;)( connection.close;)( أ ز ذ ا وؽ ا ضب ض ف اد األر بي غ ا مبػل...أفو الؽظ ا زؼب غ ايException ؽ ١ ش أ ا زؼب غ ن ا ىال بد ا ز رزؼب غ ع SQL لل ر ل ا زض بء ٠ غت أ زؼب ؼ أل ع.. Checked Exception ن ه ٠ غت أ ب ػ try catch إل زض بء ع SQLException أ ػ throws نا اإل زض بء.. أ ٠ ب بن ا زض بء أفو ٠ زظ ClassNotFoundException ف ؽبي ٠ ز ا ؼض ه ػ ايDriver )أ ي ف ف اد اإلر بي(.. أف ١ وا ع ١ غ ن ا ىال بد ؽز ايinterface. java.sql ن ه ٠ غت ػ Import ن ا ؾي ا ز و ٠ ل ب ب ؤل ث.. ايException ع ك ٠ ف ا ؾي ثب ىب )ثب زقلا *( أ رؾل ٠ ل ا ىال بد 14
تشغيل أول مثال لألتصال بالقاعده وادخال بيانات ؤفن األ ضبي ث ١ م ه أل زؼال ػ لبػل ا زقواط ر ه ا ؼ بد جبػز ب ػ ا ب.. و ٠ ل فم بثمب أ ؤ ب ب ا ز ا ج ١ ب بد ا ضبي : نا أػال موو ب ب ا ز ا ق اد و جك //SudanCS //Demo.java import java.sql.connection; import java.sql.statement; import java.sql.resultset; import java.sql.drivermanager; import java.sql.sqlexception; public class Demo private static final String username; "" = private static final String password; "" = private static final String URL = "jdbc:odbc:school;" 15
private static final String DRIVER = "sun.jdbc.odbc.jdbcodbcdriver; " private static Connection connection; private static Statement statement; private static ResultSet resultset; public static void main (String arg )][ try Class.forName(DRIVER;) connection = DriverManager.getConnection(URL,userName,password;) catch(classnotfoundexception e ) System.err.println("unable to load database Driver;)"! System.exit(1;) catch(sqlexception e) System.out.println("Cannot connect to database;)"! System.exit(1;) try 16
statement = connection.createstatement;)( String select = "SELECT * FROM Student; " resultset = statement.executequery(select;) catch (SQLException e ) System.err.println("cannot execute query;)"! System.exit(1;) try System.out.println;)( while ( resultset.next ) )( System.out.println("Number = " + resultset.getstring(1;)) System.out.println("First Name = " + resultset.getstring(2;)) System.out.println("Last Name = " + resultset.getstring(3;)) System.out.println("Tel Number = " + resultset.getstring(4;)) System.out.println;)( catch (SQLException e ) System.err.println("error in retrieving data;)"! 17
e.printstacktrace;)( System.exit(1;) try // close statement.close;)( connection.close;)( catch (SQLException e ) System.err.println("unable to disconnect;)"! System.exit(1;) الؽظ أ ب ؼ ب و أ و رمو ٠ جب ف ع try catch ا جت ؽز ػ ل ب ٠ ؾ ف ؤ ٠ ى أ ؼ ب ن ؽ ٠ ى أ ر غ ع ١ غ ا غ ف try اؽل فم ى ال أؽجن م ه وجلا ٠.. 18
19 ظؽلا ب ٠أ ب أ لقز string ٠الج ا ب يف ث ا string( لقز ا )"" بف ف و لأا ج بث كه بج ب ٠أ نب داو١غز String ب يف ب ث Driverيا.. URL ب ؼع غ١ ع داو١غز ا static ب لأ ف ب لقز ال ا ( main )static لا ى ٠ أ لقز و١غز كبػ فاك اك static لاا ؼغث.. ه نو قل أ لا قل ر ان يبض ا مف و١١غزث ٠و ى ٠ أ ؼ٠ أ لػبل دب ب١ث وفأ! مف و١غ Driverيا غل URL ؼ١ يبض ا.. %100 ن.. JDBC ي١ قل أ لا قل ر ذ أ لأا ذؾج أ نهلر ال١ع دب١ ب أ ثو ا ١ث لػبل دب ب١ج ا ظ ب وث بفبغ ا ١ مث ض لأا ف غ١ ز ر فاوزؽأ بؼز ا ء ر دبم١ج ر ١فاوزؽأ.. commerical فل ز ب رأ أ لؽا ةوغ٠ أ ٠ ان م ا ف ى٠ طوق ا ى بث : بز ا يبؽ ديغ أ و ء ب ب ر ه ى ٠ أ ةوغر بؼزر غ يا ل ا ز ا ب ووم ب أ مر ٠لؼز بث فب لأا ي بؽ أ فلر ١ل لػبم ا... ةوع و ا كبم ا مبث بؼر غ وضوأ وضوأ ع ا نب و١ضى ا دبئعبف ا نهبظز بث أ ياؤ أ هب فز ا أ ظؽلا تؽو٠... ب ث لا ا ى١ ػ ؽه للها ربووث ج ؽ لا ا إ لا إ ١ ػ ذ و ر ة ه و ؼ ا ١ ظ ؼ ا ب ج ؽ للها ب ١رؤ١ للها ف ب إ إ للها جغاه --------------------------------------------------------------------------------
ثغبفب JDBC ا ج ١ ب بد ل اػل ر ج ١ مبد ثو غ :Re سؤال : وو ب ٠ ىو فذ لل ؽ ذ لل ٠ ب ) لج عبفب( ن ا ى The Vendor Variation. ODBC أفز بها Open Database Connectivity لج م ه ثب زقل Problem وب ذ أ ٠ فو DBMS Vendor ODBC Driver ى ٠ ز ١ غ زقل ١ ٠ ل ى ا ي ا زؼب غ لبػل ا ج ١ ب بد.. ب لب ذ sun ثؼ Driver نا ODBC فال ر ز ١ غ ا زؼب غ أ لبػل ث ١ ب بد ا زبط ١ ى ؽز أ لبػل ث ١ ب بد ال ٠ عل ب Driver و ب لوأد.. ى ػ ١ ه الؽظ أ ا زقلا JDBC-ODBC Driver فم غو ا زغوث أ ػ ل ب ال ٠ ز فو Driver مبػل فم غ ١ و م ه فب ف ا ز ج ١ مبد ا زغبه ٠ ٠ غت أ ر زقل Driver مبػل أف JDBC-ODBC Driver ا جت أ ه زى ؾ ه ف ث ١ ئ ٠ ل ى فم.. Driver ف ا ؾم ١ مخ اف ا م خ.. االر بي ثب مبػلح ن ر فو ا ج ١ ب بد ل اػل و ا ٠ ب ٠ ز فال Driver نا ٠ ى Driver اوضو ٠ عل ا ؽ ١ ل ر فو لبػلح ا ج ١ ب بد.. 20
21 ىلع ةباخلإا : لاؤسلا ج بث ODBCي ف هبجػ ػ يا ك interface ؼ ر ه ي بث ا لػبل دب ب١ج ا Specification ذ ١ ظز ئب فل ر ا ؼع ي ا ا لػبل دب ب١ج ا و١غ ك ؼز لا بظ ث ١غ ز ا لا غ ث.. غ وج ا ذ بل ذف وى٠ب ك١ج زث ن Specification ا ب ؼع دب ى بظ ا لأا غ١ ز ر ي ا لأ لػبل ػ ك٠و ن يا ل ا ز ا ب زمج ب جث( ذف ه ى١ ODBC ػ غ يا ل ا لث ف٠وؼر أ ل٠و٠ القز ا ن ي ال ا م٠ ف٠وؼزث يا ل ا ف ث ن ي ال ا ر Specification لم٠ ف٠وؼر يا ل ا ٠ Implementor.. ) لأا ؾ بؼز غ بفبغ ا غ١ ز ءبػلز ا ن يا ل ا و بج لأ ث زى غ ث تغ١ف أ ػلز اك ( ب ك٠و ػ ػ دبغ بؼ القز بو- ١ؼ -JNI مر ءبػلز بث ه ر.. )يا ل ا ان ج بث ف١ظ JDBC-ODBC Driverيا ب و SUN دووم لا ؼ ر القز بث ظ اوج ا ٠هبغز ا مف اوغلأ.. ثوغز ا ان Driverيا رؤ٠ غ أ ق بفبع ب و و ب ل ػ لقز لػا ل دب ب١ث وفأ تغ٠ أ م ١ ؾزث Driverيا بق ا. ب ث ج بث ياؤ بض ا ؼ ت غأ لػا ل دب ب١ج ا وف ر Driver ب ربغز لاا ف ى ز٠ ١غ وج ا ي ا بؼز ا ه م.. ظز ا ه ن خؾ DBMS Vendor ه م ج بث وف ز وضوأ Driver ف لػبم ا ان ف لل ف زق٠ ق.. وفلأ ػ ؼ ا ذ و جل وزف لقز أ Driver MySqlي ا لؼث ل ذ٠أه ق لقز ٠ Driver وفأ ف لػبم ا ى ب لؼث ذفوػ أ ق MySql ز ا ٠ل ف زقر ػ ز ا ب لقز ا ف( لقز ٠ ظ ب وث Appserv رؤ٠ ق ث Mysql.. ) مج ه ن لل ف زقر Driverيا فلازفبث لػبل دب ب١ج ا ز ا ؼر.. ب ١ ػ ب ف٠ أ لقز ر وفأ هال ا لػبل دب ب١ج ا وفأ هال ا Driverيا ا.. ى ا ل٠ي : ODBC ػ Open Database Connectivity
ؽ ج ا ال إ إ ال ػ ١ ر و ذ ه ة ا ؼ و ا ؼ ظ ١ ؽ ج ب اهلل ١ ؤر ١ ب اهلل ف إ ب إ اهلل هاغج -------------------------------------------------------------------------------- ا بثم ا و ف ١ ر لف ب ب ى pm 8:55 ث ا خ» Wajdy Essam ف جو االص ١ 2008 17 ا غ ا بثم و ب لل أفن ب ضبي ػ األ زؼال ػ ا ج ١ ب بد ا ع ك ف لبػل ا ج ١ ب بد لل ا زقل ب ا لا executequery ا ز روعغ ٠ ؾز ResultSet ػ ا ز ١ غ ؽ ب بما ػ إكفبي ا ج ١ ب بد ا ا مبػل أ ؽز ؽنف ب أ رؼل ٠ ب. نا ب ز وق ا ١ ا ١ ثبإل بف ا ا ؾل ٠ ش ؽ ي ا ؼب الد أ ١ ز ب Transaction executeupdate زؼل ٠ ( اكفبيؽنف( ا ب ج ضبي : ػ ل ا ؾبع رؼ ١ SQL ا لا زقل ف ب وه String insert = "INSERT INTO Accounts" " +VALUES (123456,'Smith"' '" +John James',752.85;") int result = statement.executeupdate(insert;) 22
ب ف ا ى ك أػال ل ب ثبكفبي ث ١ ب بد ؽ بة عل ٠ ل.. ثؼل أ زقل ا لا executeupdate ف رى بن ل ١ هاعؼ أل ب رلي ػ ا ؼ ١ ر ذ ا أل.. String change = "UPDATE Accounts" " +SET surname = 'Bloggs"' " +firstnames = 'Fred Joseph"' " +WHERE acctnum = 123456;" statement.executeupdate(change;) ف األ و ب ل ب ثزؼل ٠ ث ١ ب بد ا ؾ بة م ا ول 123456 رغب ب ا م ١ ا واعؼ أ و غ ١ و ف جؼب.. أ ب الؽظ ى ا غل ٠ ل ثبأل String remove = "DELETE FROM Accounts" " +WHERE balance < 100;" result = statement.executeupdate(remove;). 100 ثب ؾنف ل ب ب أل ا و ١ ل ٠ ى ؽ بة أ ا ج ١ ب بد لبػل 23
ؤفن األ ضبي ب ف ا ضبي ف ا غ ا بثم ) ضبي ) School.. ف ا ضبي أ ال م ثؼو ع ١ غ ا ج ١ ب بد ا ع ك ف ا مبػل ص م ثبكفبي ؽم عل ٠ ل أل ثزغ ١١ و ث ١ ب بد ؽم ب )رنوو لل ٠ ى ا ؾم ل ٠ ه ثب قز ف ف ١ غت أ رغ ١ و اما وب ون ه ا ه ا زب ١ ز ؼ ه ا ا ؾم ف لبػلر لج ثؼل ا زؼل ٠ ( أف ١ وا م ثؾنف و ا ج ١ ب بد أ ٠ ب لل ٠ قز ف ػ ؽ ت ا ج ١ ب بد ا ز ل ٠ ه ا ضبي ف ا بء اهلل أل ب وؽ ب بثمب.. //SudanCS //Demo.java import java.sql.connection; import java.sql.statement; import java.sql.resultset; import java.sql.drivermanager; import java.sql.sqlexception; public class Demo private static final String username; "" = private static final String password; "" = private static final String URL = "jdbc:odbc:school;" private static final String DRIVER = "sun.jdbc.odbc.jdbcodbcdriver; " 24
private static Connection connection; private static Statement statement; private static ResultSet resultset; public static void main (String arg )][ try Class.forName(DRIVER;) connection = DriverManager.getConnection(URL,userName,password;) catch(classnotfoundexception e ) System.err.println("Unable to Load Driver;)" System.exit(1;) catch (SQLException e ) System.err.println("Cannot connect with database;)"! System.exit(1;) try statement = connection.createstatement;)( System.out.println("Initil database Data;)" : 25
printtable;)( // perform operation String insert = "INSERT INTO Student+ " " Values('99-99','romansy','sudani','0919820 ; ")' int result = statement.executeupdate(insert;) if ( result == 0 ) System.err.println("Unable to insert data;)"! String update = "UPDATE Student + " " SET firstname='wajdy+ "' " lastname='essam+ "' " WHERE number = '112-1; "' result = statement.executeupdate(update;) if ( result == 0 ) System.err.println("Unable to Update data;)"! String delete = "DELETE FROM Student + " " WHERE tel = '54654655; "' result = statement.executeupdate(delete;) if ( result == 0 ) 26
System.err.println("Unable to Delete data;)"! System.out.println("After Operation;)" : printtable;)( // close connection connection.close; )( catch(sqlexception e ) e.printstacktrace;)( public static void printtable () throws SQLException String select = "SELECT * FROM Student; " resultset = statement.executequery(select;) System.out.println;)( while ( resultset.next ) )( System.out.println("Number = " + resultset.getstring(1;)) System.out.println("First Name = " + resultset.getstring(2;)) System.out.println("Last Name = " + resultset.getstring(3;)) 27
System.out.println("Tel Number = " + resultset.getstring(4;)) System.out.println;)( 28
Transaction المعامالت : ا جوا ظ ا زغبه ٠ ا ز رز ت كف ي ا ؼ الء ت ثؼ ب األ ١ بء رز ت ؼب غ فب transaction processing أل ٠ ى أ ٠ لف ػ ١ لغ ٠ م ث ت ل ؼ ب ف ١ م ظب ه ثبكفبي ن ا ج ١ ف عل ي ا ج ١ بد ٠ م ث م ب ػلك ا م غ ف عل ي ا م غ.. ؽ ب ى بما ؽلصذ ى ثؼ أ ت ا ؼ ١ ا م ؼ لج أ ر م عل ي ا م غ ) ى ف ا جى األر بي أ ٠ ب وب ذ!( ىنا ٠ ى ؼ ١ أفو أ ٠ م ثؤفن ف ا م ؼ ثب زب بو ال ؽ و ب.. ا ؼ ف ن ا ؾبالد أ أ ػ ١ ٠ م ث ب ا ؼ ١ رزغ غ غ ثؼ ب ٠ ثب ؼب Transactions ر فن اال ع ١ ؼب أ ال اؽل.. ثب زب ر ن ا ؼ ١ بد ثب زور ١ ت.. األ ا و ا ز زؼب ث ب ف ن ا ؾب Commit ؼ ب ب ل ثب ؼ ١ ف ا مبػل جب و Rollback ؼ ب ب رواعغ ن ا ؼ ١ ( ف ؽبي ؽلس ف (.. ف JDBC ا ؾب األفزوا ١ ؼ ١ ايCommit true ث ؼ أ ت أ ػ ١ ا مبػل ٠ ز جب و )و ب موو ب أ ثؼ األؽ ١ ب ال و ٠ ل ض ن ا قب ١ ( ن ه ب ٠ غت أ غ ك ن ا قب ١.. ا فمو ا زب ١ ر ؼ ا ؼ ١ و ١ ف ٠ ى رفبك ا ى ف ؽبي ؽ ذ :... connection.setautocommit(false;)... try //Assumes existence of 3 SQL update strings //called update1, update2 and update3. statement.executeupdate(update1;) 29
statement.executeupdate(update2;) statement.executeupdate(update3;) link.commit;)( catch(sqlexception sqlex) connection.rollback;)( System.out.println( *"SQL error! Changes aborted;)"*...... : MetaData وض ١ وا ب غ ػ نا ا ؼ ا ن ٠ ؼ ث ١ ب بد ى ػ ا ج ١ ب بد أ ٠ ب ب ف ؽب ز ب ن ف ٠ ى ث ١ ب بد ػ ا ج ١ ب بد ا ع ك ف ا مبػل.. Data About Data فؼ ل ب م ثبأل زؼال لبػل ا ج ١ ب بد ٠ ؤر ا برظ ResultSet ا ى ؼوف ث ١ ب بد ػ ا ج ١ ب بد ا ع ك ف ١ م ه ثب زقلا ا لا MetaData ا ز روعغ ResultSetMetaData ف نا ا ىال ف ٠ ى ل ٠ ب و ١ ا ل اي أ ب / int getcolumncount)( 30
String getcolumnname(<colnumber)> int getcolumntype(<colnumber)> String getcolumntypename(<colnumber)> ا ل اي ا ؾ األ األ رؼ ١ ل ػلك األػ ل ف ا مبػل ا ضب ١ رؼ ١ ل ا ا ؼ ك ثبيindex ا ضب ض رؼ ١ ل ع ا ج ١ ب بد ا ن ٠ افك ا ؼ ك األف ١ و رؼ ١ ل األ نا ا ع ؤفن ضبي ث ١ ٠ ؼ ب و ١ ف ١ ا زقلا : //SudanCS //Demo.java import java.sql.connection; import java.sql.statement; import java.sql.resultset; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.resultsetmetadata; public class Demo private static final String username; "" = 31
private static final String password; "" = private static final String URL = "jdbc:odbc:school;" private static final String DRIVER = "sun.jdbc.odbc.jdbcodbcdriver; " private static Connection connection; private static Statement statement; private static ResultSet resultset; private static ResultSetMetaData metadata; public static void main (String arg )][ try Class.forName(DRIVER;) connection = DriverManager.getConnection(URL,userName,password;) catch(classnotfoundexception e ) System.err.println("Unable to Load Driver;)" System.exit(1;) catch (SQLException e ) System.err.println("Cannot connect with database;)"! System.exit(1;) 32
try statement = connection.createstatement;)( String select = "select * from Student; " resultset = statement.executequery(select;) printtable;)( */ // perform operation String insert = "INSERT INTO Student+ " " Values('99-99','romansy','sudani','0919820 ; ")' int result = statement.executeupdate(insert;) if ( result == 0 ) System.err.println("Unable to insert data;)"! String update = "UPDATE Student + " " SET firstname='wajdy+ "' " lastname='essam+ "' " WHERE number = '112-1; "' result = statement.executeupdate(update;) 33
if ( result == 0 ) System.err.println("Unable to Update data;)"! String delete = "DELETE FROM Student + " " WHERE tel = '54654655; "' result = statement.executeupdate(delete;) if ( result == 0 ) System.err.println("Unable to Delete data;)"! /* System.out.println("After Operation;)" : printtable;)( // close connection connection.close; )( catch(sqlexception e ) e.printstacktrace;)( public static void printtable () throws SQLException 34
metadata = resultset.getmetadata ;)( int count = metadata.getcolumncount;)( for (int i=1 ; i<=count ; i)++ System.out.printf("%-8s\t", metadata.getcolumnname(i ;) ) System.out.println("\n;)" while ( resultset.next) )( for (int i=1 ; i<=count ; i)++ System.out.printf("%-8s\t",resultSet.getObject(i;)) System.out.println;)( 35
ر ب ل الؽظ أ ج ١ ثب بثك ى ر ػ Import يResultSetMetaData رؼ ١ مبد غيء ا قب ثبألكفبي ا ؾنف )ال و ٠ ل األ ) هوي فم ف ا لا ل ب ث جبػ ا ١ له ػ و ١ ف metadata = resultset.getmetadata ;)( int count = metadata.getcolumncount;)( ػ ؽ ب ب ايmetaData األػ ل ػلك ث ؼوف فال ل ب for (int i=1 ; i<=count ; i)++ System.out.printf("%-8s\t", metadata.getcolumnname(i ;) ) System.out.println("\n;)" ل ٠ ب.. جبػز ا ؼ ك ا ثؤفن م ث ١ ؽ م فالي while ( resultset.next) )( for (int i=1 ; i<=count ; i)++ 36
37 System.out.printf("%-8s\t",resultSet.getObject(i ;)) System.out.println;)( ١ئيغ ا ن ش١ؽ م ؾ ا while ت نز و و ث طوق ا ب فاك م ؽ loop ت نز ٠الث و ا ا كلػ( ز٠ب ) ل ػلأا مر نفؤث ١م ا ١ بؾ ا ب ذ بو ب ػ ك٠و ػ getobject ب زػبج ص ػ.. ب ا ن م٠و ب ثه فأ نفأ و string لؽ زػبج لا ف مف و ب ه١ ػ ػ م ؽ كلؼث ل ػلأا لقز ا getobject.. مف DataBase && GUI: قو ز او١ضو ان ع ا تج ا أ ت ز٠ ؼث دب١ ب لأا GUI ف ىز ب ػ ت٠وم ا ا ءب للها ى ف وؼ يبض ػ وػ طوق ا مف ي لع.. ١ ث نب وضوأ م٠و ان و لأا لقز لؽا أ لاى ا JTable زؾ٠ ػ اك ءب ث جمز ر Vector ض ٠ دب ب١ج ا Vector وفأ ض ٠ هل١ ا بق ا.. ي لغ بث بؼج دب ب١ج ا ب ث ب أ لػ و أ و و زؾ٠ ػ لػ دب ب١ث ف ف ى٠ ان Vectorيا هبجػ ػ.. >>Vector<Vector<Object Objectيا و١فلأا لأ دب ب١ج ا لل ف زقر لاض مؽ Int مؽ string ه ن ب ؼغ.. Object يبض ا ذ ل زثبزىث م٠و ث فأ ض لأا مثب ا لل ى٠ م هللا أ ض لأا وجولأا ب و فوؼز غ هب ا أ بؼز ا غ لػبل دب ب١ج ا ء ذثبص و و
رم ثبػبك ف ا ى ك.. ؽ ت هغجزه.. ػب و ك ثىزبث رم هث ب ٠ زقل أل ػ و جؼب ث ١ ب بد لبػل //SudanCS //display Result of Query in JTable import java.awt.event.windowlistener; import java.awt.event.windowevent; import java.awt.event.windowadapter; import java.awt.borderlayout; import javax.swing.jframe; import javax.swing.jpanel ; import javax.swing.jscrollpane; import javax.swing.jtable; import java.sql.connection; import java.sql.statement; import java.sql.resultset; import java.sql.drivermanager; import java.sql.sqlexception; 38
import java.sql.resultsetmetadata; import java.util.vector; public class TestDatabase public static void main (String args[]) throws SQLException QueryFrame app = new QueryFrame;)( app.addwindowlistener( new WindowAdapter)( public void windowclosing (WindowEvent event) try DataBastOperation.closeConnection;)( System.exit(0;) catch ( SQLException e) System.out.println("Unable to Disconnect;)"! 39
System.exit(1;) ;) app.setvisible(true;) class QueryFrame extends JFrame private JTable tbl; public QueryFrame () throws SQLException settitle("query Result;)" setsize(300,150;) DataBastOperation db = new DataBastOperation;)( String select = "SELECT * FROM Student; " 40
tbl = new JTable( db.performequery(select), db.getheading; ) )( add ( new JScrollPane(tbl), BorderLayout.CENTER;) class DataBastOperation private static Connection connection; private Statement statement; private ResultSet resultset; private String DATABASE_DRIVER = "sun.jdbc.odbc.jdbcodbcdriver; " private String DATABASE_URL = "jdbc:odbc:school; " private String username; "" = private String password; "" = public DataBastOperation)( try 41
Class.forName( DATABASE_DRIVER; ) connection = DriverManager.getConnection(DATABASE_URL,userName,password;) statement = connection.createstatement;)( catch ( ClassNotFoundException e) System.out.println("Unable To Load Database;)" System.exit(1;) catch ( SQLException e) System.out.println("Unable to Connect With Database;)"! System.exit(1;) public Vector<Vector<Object>> performequery ( String stmt) Vector<Vector<Object>> rows = new Vector<Vector<Object; )( >> try 42
resultset = statement.executequery(stmt;) while ( resultset.next ) )( Vector<Object> rslt = new Vector<Object;)( > rslt.add( resultset.getstring(1;) ) rslt.add( resultset.getstring(2;) ) rslt.add( resultset.getstring(3;) ) rslt.add( resultset.getstring(4;) ) rows.add( rslt; ) catch ( SQLException e) System.out.println("unable to Retrive Data;)"! System.exit(1;) return rows; 43
public Vector<String> getheading () throws SQLException Vector<String> head = new Vector<String;)( > try ResultSetMetaData metadata = resultset.getmetadata;)( int count = metadata.getcolumncount;)( for (int i=1 ; i<=count ; i)++ head.add( metadata.getcolumnname(i;) ) catch ( SQLException e) System.out.println("unable to Retrive Data;)"! System.exit(1;) return head; 44
public static void closeconnection () throws SQLException connection.close;)( ن ه ا قوط : أوضو : ؼو ألفو ضبي ا ع ٠ بػل ف ف أفو ع //program that connect with School.mdb DataBase //and query the database import java.sql.connection; import java.sql.statement; import java.sql.drivermanager; import java.sql.resultset; import java.sql.resultsetmetadata; 45
import java.sql.sqlexception; import java.util.scanner; import java.util.vector; import javax.swing.jframe; import javax.swing.jtable; import javax.swing.jscrollpane; import javax.swing.jpanel; import java.awt.borderlayout; import java.awt.event.windowlistener; import java.awt.event.windowevent; import java.awt.event.windowadapter; public class TestDatabase ; private static String JDBC_DRIVER = "sun.jdbc.odbc.jdbcodbcdriver " private static String DATABASE_URL = "jdbc:odbc:school; " private static String username; "" = private static String password; "" = 46
private static Connection connection; private static Statement statement; private static ResultSet resultset; private static ResultSetMetaData metadata; private static JTable t; public static void main (String args)][ boolean state = true; try // load DataBase and Make Connection loaddatabase ;)( while ( state) switch ( menu ) )( case 1: insertdata;)( break; 47
case 2: deletedata;)( break; case 3: updatedata;)( break; case 4: // printinformation;)( break; case 5: printall;)( break; case 6: state = false; break; default: 48
System.out.println("Invalid Data, Try Again;)"! break; catch ( SQLException e) e.printstacktrace;)( System.exit(1;) catch ( ClassNotFoundException e) System.out.println("Cannot Load DataBase;)"! System.exit(1;) finally try closedatabase;)( 49
catch ( SQLException e) System.out.println("Cannot Close DataBase Connection;)"! System.exit(1;) */ * loaddatabase * This Method for Loading DataBase * and create Statement and Connection for dealing with DataBase /* public static void loaddatabase () throws SQLException, ClassNotFoundException // Load DataBase Class.forName( JDBC_DRIVER; ) // make connection to database connection = DriverManager.getConnection( DATABASE_URL, username, password; ) 50
// get statement to qury database statement = connection.createstatement;)( public static void closedatabase() throws SQLException statement.close;)( connection.close;)( */ * menu * This Method for Displaying Menu For User * and return the user choice /* public static int menu)( System.out.println(" \n\n********* School DataBase System ********** \n;)" System.out.println("Enter New Student Information... [1;)"] 51
System.out.println("Delete Exsist Student Information... [2;)"] System.out.println("Update Exsist Student Information... [3;)"] System.out.println("Print Spcified Student Information... [4;)"] System.out.println("Print All Student Information... [5;)"] System.out.println("Exit From School System... [6;)"] Scanner input = new Scanner( System.in;) System.out.print("\n\t;) " >> int choice = input.nextint; )( return choice; */ * printall * This Method for Displaying All Student information /* public static void printall () throws SQLException String selectall = "SELECT * FROM Student" ; // Sql Statement resultset = statement.executequery(selectall;) 52
// get infromation about databse table metadata = resultset.getmetadata ;)( int numberofcolumns = metadata.getcolumncount;)( Vector <String> header = new Vector<String;)(> Vector <Vector<Object>> rows = new Vector <Vector<Object;)( >> // print DataBase Columns Header for (int i=1 ; i<=numberofcolumns ; i)++ // System.out.printf("%-8s\t",metaData.getColumnName(i;)) header.add( metadata.getcolumnname(i; ) ) System.out.println;)( // print result of Database while ( resultset.next) )( // System.out.printf("%-8d\t",resultSet.getInt(1;)) // System.out.printf("%-8s\t",resultSet.getString(2;)) // System.out.printf("%-8s\t",resultSet.getString(3;)) 53
// System.out.printf("%-8s\t",resultSet.getString(4;)) // System.out.printf("%-8d\t",resultSet.getInt(5;)) // System.out.println;)( Vector <Object> row = new Vector<Object;)( > row.add( resultset.getstring(1;)) row.add( resultset.getstring(2;)) row.add( resultset.getstring(3 ;)) row.add( resultset.getstring(4;)) rows.add(row;) t = new JTable(rows,header;) DisplayTable dt = new DisplayTable(t;) dt.setsize(400,200;) dt.setvisible(true;) dt.addwindowlistener( new WindowAdapter)( public void windowclosing(windowevent event) return; 54
;) */ * getname * This Method return FirstName entered by user * and its used by other method /* public static String getname)( Scanner input = new Scanner (System.in;) System.out.print("\nEnter Student FirstName;)" : String s = input.next;)( return s ; */ * deletedata * This Method delete student info by firstname 55
/* public static void deletedata () throws SQLException // not complete, you must enter all information, and delete thing you want String name = getname;)( String s = "DELETE FROM Student WHERE firstname = '" + name + ; "'" int state = statement.executeupdate(s;) if ( state!= 0) System.out.println("\nDelete Student = " + name;) else System.out.println("Cannot Found Student = " + name;) */ * insertdata * This Method delete student info by firstname 56
/* public static void insertdata () throws SQLException Scanner input = new Scanner (System.in;) System.out.print("\nEnter Student Number;)" : String id = input.next;)( System.out.print("\nEnter Student FirstName;)" : String fn = input.next;)( System.out.print("\nEnter Student LastName;)" : String ln = input.next;)( System.out.print("\nEnter Student Tel;)" : String d = input.next;)( String s = "INSERT INTO Student VALUES+ "'( id + "','" + fn + "','" + ln + "','" + d; ")'"+ 57
int state = statement.executeupdate(s;) if ( state!= 0) System.out.println("\nINSERT Student = " + fn;) else System.out.println("\nINSERT Student = " + fn;) */ * updatedata * This Method Update student info by firstname /* public static void updatedata () throws SQLException // not complete, you must enter all information, and update thing you want String name = getname;)( String s = "UPDATE Student SET firstname = '" + name; "'" + 58
int state = statement.executeupdate(s;) if ( state!= 0) System.out.println("\nUpdate Student = " + name;) else System.out.println("\nCannot Found Student = " + name;) class DisplayTable extends JFrame private JTable tbl; public DisplayTable ( JTable t) tbl = t; settitle("display Result ;)" add(new JScrollPane(tbl), BorderLayout.CENTER ;) 59
ف ٠ ؼو لبئ ٠ ز ١ ؼ ه اكفبي ا زؼل ٠ ػ ا مبػل ا ضبي غ ١ و ىز ث ى.. %100 الوأ ف رؼوف و ١ ف رى ث ف ه ؤر لف ب ا و ا مبك ثبم رؼب ز ب ي ع ف ا ز ١ غ.. Scrollable ResultSets غب ٠ األ ١ ا زؾون ف -------------------------------------------------------------------------------- 60
61 : لاؤس.. ى ٠ أ ل ؼ ا jdk آ أ Drive ج بث JDKي ف يؾ ا ز ا ب ١ لقز ر غ وج ف زؾر ػ عوز ا javac و ف ا java ظ اوث Applet Veiwerن وفأ. java doc زؾ٠ ػ Driver ثو غ ODBCيا ٠. JDBC-ODBC Driver ه ن ا دكهأ أ لقز ر ان Driverيا ف طبزؾر ١ ؾز لأ رؤ٠ بمج غ.. غ ا ان ػو ه بث ؿلأا ثأ ك ؼ وف ا ك٠وف ا ثوؼ ا غ وج ثو بفبع غ : MS-Sql Server 2005 ثه بفبع غ MS-SQL Server 2005 ظؽلا( أ لقز أ Driver ل٠لع بز بث تغ٠ ١ ؾر ى ؼ٠ غ أ ظأ ا وف٠اهل ا ن ا ب لقز ا غ وأ ٠. ) وغ بث ان ػو ه بث ثو MySql ز ا رؤر غ Appserv ؿلأ : كب ثه بفبع غ MySql ك ع ا Appserv لؤ ب ١ف لؼث ؼ١ زث ثه بفبع غ Mysql مف ف١و ى ٠ أ ب لؼ ى ث.. ل١ع فب لإبث ا لػبل Sqlite ب ٠أ Derby ز ا رؤر غ ذ ي ١ث ل٠لغ ا ث ز دب١ ب لأا ي لأبث ن ه لأا ا ءب.. للها ج ؽ ا لا إ لا إ ١ ػ ذ و ر ة ه و ؼ ا ١ ظ ؼ ا ب ج ؽ للها ب ١رؤ١ للها ف ب إ إ للها جغاه --------------------------------------------------------------------------------
am 3:09 JDBC ثو غ ر ج ١ مبد ل اػل ا ج ١ ب بد ثغبفب :Re ث ا خ» ToBeOrNotToBe األهثؼبء ٠ ب ٠ و 2009 07 وفغ..!! ToBeOrNotToBe عل ٠ ل ب ت بهوبد: 17 am 4:38 2008 09 جز جو ا ضالصبء ف : ا زون أػ -------------------------------------------------------------------------------- ok )-: am 8:56 ث ا خ» Wajdy Essam ٠ ب ٠ و األهثؼبء 2009 07 ToBeOrNotToBe welcome again brother, we sorry for late the progress of this tutorial, but this due to some problem in the past time 62
however, we will continue to complete this tutorial even if we late many days, but now we will explain the last point we stopped in last section "Scrollable ResultSets " and cover every thing about this point for demonstrate all the available DBMS and how it's usage it will be tedious task, so we will take one DBMS like sqlie and explain how to configure DB and how to connect to this DB from java application, and the other DBMS will be the same method but only you need to change the driver and to configure the DB with yourself sorry for written in this bad english langauge, their is no arabic support. now in my pc happy java programming ؽ ج ا ال إ إ ال ػ ١ ر و ذ ه ة ا ؼ و ؽ ج ب اهلل ١ ؤر ١ ب اهلل ف إ ب إ اهلل هاغج ا ؼ ظ ١ Wajdy Essam ب ت فؼبي 63
بهوبد: 1059 am 12:43 ا زون ف : االص ١ إثو ٠ 2008 21 ا غب ؼخ: Neelain ا ز ا لها : Graduate ا زق : Computer Science WWW أػ -------------------------------------------------------------------------------- am 10:52 JDBC ثو غ ر ج ١ مبد ل اػل ا ج ١ ب بد ثغبفب :Re ث ا خ» ramrode ا ق ١ ٠ ب ٠ و 2009 08!!! nice work ramrode ب ت ١ 64
بهوبد: 22 pm 7:31 ا زون ف : ا جذ أغ 2008 02 ا غب ؼخ: ComputerMan College ا ز ا لها : ل فو ١٠ ظ ا زق : telecommunications أػ -------------------------------------------------------------------------------- am 4:39 JDBC ثو غ ر ج ١ مبد ل اػل ا ج ١ ب بد ثغبفب :Re ث ا خ» ToBeOrNotToBe ا جذ ٠ ب ٠ و 2009 17 ىوا لبػلح ه ػ رغب ثه ؼ ب ؾ ف ا زظبه او بي ب ا ج ١ ب بد MYSQL ظوا ؼ ثخ ا زؼب ؼ ب.. ػ ا ؼ ٠ ى ا ار ى ثلأر ال ٠ ي أ ز ا زظبه ب.. ىوا عي ٠ ال.. ا زبم ب ا ؼي ٠ ي.. ToBeOrNotToBe ب ت عل ٠ ل 65
بهوبد: 17 am 4:38 2008 09 جز جو ا ضالصبء ف : ا زون أػ -------------------------------------------------------------------------------- أف ؽ ب pm 12:04 ث ا خ» Wajdy Essam ٠ ب ٠ و ا غ ؼخ 2009 23 ا ؼنه ػ األ ب ا بء اهلل.. رؼ ف وب ذ ب ث ١ ب بد لبػل أ ف ا جوا ظ ر ج ١ ك ٠ ى ه ى ٠ جم و ١ ف ٠ ى أ رؼل لبػل MySQL ث ى ع ١ ل واؽ ا مبػل ق غب ٠ رؾزبط ىزبة وب ا أهكد أ رزؼب ثى غ ١ و وج ١ و ث ب ؽ ١ ش رؼ ف ه Client- Server و ب موود بثمب ا ؼنه ػ اال ب ف ا ع ا جت اال غبي ثب لها ى ثبم اهلل ى ا ع ب وب.. ز ؾلس ػ ز ١ ت MySql ا ؼ ف أ ب ١ بر ب فم أ ب ي ٠ ل فزؾزبط موائ ف ا ىزت ا ا ١ غ ا قز ةMySQL. ػ ا ؼ ن ه اث ف ١ ل ا بء اهلل : Using JDBC with MySQL, Getting Started Connecting Netbeans to a MySQL Database Connecting to MySQL Java using NetBeans Using MySQL With Java 66
67 -------------------------------------------------------------------------------- لاؤس نع طقف Commit" ب ب ؼ ل ١ ؼ بث لػبم ا " و بج نب دب١ ػ لا زر ف حلػبم ا حو بج ب ؼ link.commit ى غ ر يبض ؼ ٠ حه ث وجوا Transactions ا وز ا ؼعا ١فو ١ ا- حكب٠ى ١ ا ١ ا http://www.wathakker.net/lib_audio/view.php?id=436 ب ج ؽ" ا ب ١ ر ؤ ١ ا ف ب إ إ ا " ج غا ه ا ١ ؼ ز ا و ج ب ث حب ا ب إ ح و١ ج ى ب إ ػ ١ ؼ ب ق ا رو٠ تؾ بث.. ج ل تؽ و١ف ه.. ثه ث دو ثا.. ثهك ؼ١ف ب٠ ي هب٠ للها. ذ ػ ه ه ا ١ ا ػ ب ل١ ل ؾ ػ ا خجؾ soldierofallah ك٠وف ؼ ا
بهوبد: 1158 ا زون ف : ا جذ ٠ ب ٠ و pm 4:41 2009 31 ىب : ع خ ا فوك ثؤم اهلل ا غب ؼخ: umar almukhtar ا ز ا لها : still ask to learn ا زق : Purpose of Life اال ز ب بد: SaViNg ThE world WWW YIM أػ -------------------------------------------------------------------------------- اهلل ؽ ١ بن pm 2:53 ث ا خ» Wajdy Essam فجوا ٠ و ا جذ 2009 14 ف ا جلا ٠ اإلػلاك اإلفزوا أل ع SQL م ثز ف ١ ن ب ف ا جو ب ظ زى Commited ث ؼ أ أ ػ ١ ) ١ ى اكفبي ث ١ ب بد ب ت ف عل ي( ف ه أ رز فن ٠ ى ا زواعغ ب مب. Rollback ؽ ب ب ا فبئل ا زواعغ ن ا ؼ ١ ثؼل ر ف ١ ن ب ؼ ١ ل ف بما ا ب ت نا ث ١ ب بد أكفبي و ٠ ل أ ب ؼ ف ؾ أ ال 68
69 ع ا و ه ؾ ز٠ ػ دبجص لػبم ا database integrity ١قر ب ٠ل بظ ى ث لع ر ب ٠ل اك ٠ ؾر ل١ ه.. وفلأ ةب ؽ ر ن١ف ر ن ال ا ه م م ث ١م ا كاو ا ب ٠ ؾر ةب ؾ ا ي لأا تج ب ذ ؽ ءا ( ى ىج ا ك ػ ظ ب وج ا Hanging أ ) ى جل أ ز٠ ن١ف ر ال ا ١ بض ا يبفكا ن ١م ا ةب ؾ ا.. بض ا ب ىر ى ا ش١ؽ أ ١ ؼ ا لأا ر ب ن١ف ر Commited ب أ ١ بض ا.. لاف لا ى ٠ غعاوز ا ػ ١ ؼ ا.. لأا بىف ؾ ا فلأا لػ ن١ف ر ن دب١ ؼ ا ب ؾ ا و ب ػ لؽ ث ز٠ ب ن١ف ر و لؽا ف يبؽ دنف ر ب ؼ١ ع لاف لع ر وب لاا ف ف ز٠ غعاوز ا ػ غ١ ع ن دب١ ؼ ا. Rollback غ١ غر ن دب١ ؼ ا ب و كبػ ك ٠ ١ ػ لػا ل دب ب١ج ا بث هبجػ(Transactionيا ػ غ١ غر ل٠لؼ ا دب١ ؼ ا ز ا ل٠و أ ب مج ػ لػبم ا لئبف ا ب ب و دووم ب أ ب أ أ نف ر ب و أ لا نف ر ) بللا ا ه ن اما ذ بو ال ا ب ؽ ب و اك ٠ ؾر ل١ و ا ف٠ ن١ف ر دب١ ؼ ا و لؽا ه م ى٠ لا أ قلاغبث ن١ف ز ا ئبم ز ا لػبم ا ب لؼث ز٠ ءاوعا دب١ ؼ ا ى ث كبػ او١فأ ز٠ ءبػلز ا ال ا commit ن١ف ز غ١ ع ن دب١ ؼ ا لؽا ر.. وفلأا يبؽ سلؽ لاض ( ؤ ف ١ ؼ ا ض بض ا ن١ف ر ) دب١ ؼ ا SQLException ز٠ ءبػلز ا ال ا rollback ز ا ل١ؼر لػبم ا ا ب ز بؽ ١ لأا جل ن١ف ر ن دب١ ؼ ا. ب ؼ١ ع conn.setautocommit(false;) //other statements Statement stat = conn.createstatement;)(
//operations stat.executeupdate(command1;) stat.executeupdate(command2;) stat.executeupdate(command3;) //now execute all operations conn.commit;)( //if error accure return to last commited conn.rollback;)( ثبفز به فم ػ ١.. ا ع ؽ ي ب زؼ ك غ ػ ر ف ١ ن أ ر ف ١ ن ػل أ ا ؼ ١ بد Using Transactions ب : أ ظو ي ٠ ل فىور أر ؾذ لل رى أ أهع ا ثب ز ف ١ ك 70
71 ؼ ذؾ را و١ف ذ٠يع حوىف ا ب ثه ي بؽا خئاول ثاو ا ب م١ج ز ا ءب للها فا بف ا امب لا غ ر ٠هب ر ؼ ب ١ ػ زؽ ؼ ز٠ ى ػ ل خركبفز ا هل ا ل١ف٠ ٠وفلاا خز بؾ ث م ٠ ع ا دلا بؾ دبم١ج ر ز ب لجز بؼ١ ع ى لا غ ر ب خجؼ ظ اوث زؽ لا ةو ب ب و وظز ػو حلػبل mysql ثو ا ب ث نايع للها و١ف ب نجر و ؼ ا ا وز ا ؼعا ١فو ١ ا- حكب٠ى ١ ا ١ ا http://www.wathakker.net/lib_audio/view.php?id=436 ا ١ ؼ ز ا و ج ب ث حب ا ب إ ح و١ ج ى ب إ ػ ١ ؼ ب ق ا رو٠ تؾ بث.. ج ل تؽ و١ف ه.. ثه ث دو ثا.. ثهك ؼ١ف ب٠ ي هب٠ للها. ذ ػ ه ه ا ١ ا ػ ب ل١ ل ؾ ػ ا خجؾ
hi again ؽ ب ٠ ى أ ر جم ا أ ضبي غ ١ و ٠ ىف ا م ١ ب ث األكفبي ج ١ ب بد الة ظف ١ أع ي ) ٠ ى ف اال زؼال ٠ ى أ ر زقل ا ا اع بد GUI اما أ ى م ه.. األفواط ا ؾنف ) اء ػ األ ١ بء ا ع ك ف ١ ٠ ىف نا وجلا ٠ ي ٠ ل ز جبد أوضو ؽز ال ىجو ا جو ب ظ ٠ جؼ ؼت ا زؼل ٠ و ٠ ل رؼ و ١ ف ١ وزبث ثوا ظ ا زؼل ٠ ا ١ ب م ه ثب زقلا أ ب ١ ت ا جو غ ا ع ايpattern. design ثبم رؼب فم أ ز األفزجبهاد - ب ٠ ا و ا ؾب - ز ب ي ضبي وب جو ب ظ ب ع ضال زغو ألفال أ ا ج بئغ ؾب ي أ م ثف ا اع ػ ا ز ج ١ ك ػ لبػل ا ج ١ ب بد )3 جمبد( ثب زب رى رؼل ٠ ١ ب أ جم أ و زم ثنار ال ٠ ؤصو ػ غ ١ و.. و ب لل رؾلص ب ػ نا ا ف ف ا م ا ؼب ثب.. ) MySQL ا بء اهلل م ثز ج ١ م ف ثو ب غ ب ا غل ٠ ل )ا ن ١ زقل MVC -------------------------------------------------------------------------------- JDBC ثو غ ر ج ١ مبد ل اػل ا ج ١ ب بد ثغبفب :Re ث ا خ» soldierofallah ا جذ فجوا ٠ و pm 4:07 2009 14 72
73 لا ا ى١ ػ خ ؽه للها خربووث ى ب خزج هرو ؽ خفب ا دب ب١ث ----فنؽ هرو ؽ ذ ل خث ؼف بث ا هرو ؽ ل مر ا مز بؼز ا غ و ا ا لاؼز لاا ب ػ ي بؾث ف١ ا ػ ظ ب وث هرو ؽ ػ Gui خ وفا و ا ا لا خ ؼث هرو ؽ مر خ ؼث --- مث ى ا ءب للها غ ث رلا بؾ ك١ف ز بث ف هراهبجزفا ا ءب للها ذ٠يع و١ف ػ ------- ػبفر ه بو وى ر خ لا ق ؼز٠ ل١فز ٠ ان وو ه نايع للها و١ف ا وز ا ؼعا ١فو ١ ا- حكب٠ى ١ ا ١ ا http://www.wathakker.net/lib_audio/view.php?id=436 ب ج ؽ" ا ب ١ ر ؤ ١ ا ف ب إ إ ا " ج غا ه ا ١ ؼ ز ا و ج ب ث حب ا ب إ ح و١ ج ى ب إ ػ ١ ؼ ب ق ا رو٠ تؾ بث.. ج ل تؽ و١ف ه.. ثه ث دو ثا.. ثهك ؼ١ف ب٠ ي هب٠ للها. ذ ػ ه ه ا ١ ا ػ ب ل١ ل ؾ ػ ا خجؾ :Re غ وث دبم١ج ر لػا ل دب ب١ج ا JDBC بفبغث خ ا ث» soldierofallah ١ صلاا و٠اوجف 2009 16 am 12:27 لا ا ى١ ػ خ ؽه للها خربووث ل ؾ ا للها بج٠ومر ه ا ػ ءب ز لاا خ
ى ؤاي ؾ وره ا الػ بء و ١ ف اما و ذ ا زقل netbeans id ا اػوف ؽغ panel ؼ ١ خ ىب ب ػ ايframe ؽز ا زجل ب ة text area ث ف ا ؾغ ف ف ايposition اما بن ه اث ف ١ لح فغي ٠ ذ ف ١ و اما ال ٠ عل زظو هك ؽ وره ثؼل االفزجبهاد ا بء اهلل ا ال ػ ١ ى هؽ خ اهلل ثووبرخ ا ا زو اعؼ وف ١ ى ٠ بكح -ا ١ ا ١ ا ١ http://www.wathakker.net/lib_audio/view.php?id=436 ٠ ور ثب ؾت ل ج.. ؽت ف ١ و ه هث.. ث اث ود كهث.. ٠ ب ف ١ ؼ ٠ به ي اهلل. ذ ػ ه ه ا ١ ا ػ ١ ل ب ؾ ل ػ ا ؾجخ اهلل بء ا ز اعل am 1:05 ث ا خ» Wajdy Essam فجوا ٠ و االص ١ 2009 16 ثو غ ١ ب ا زجلا ب رو ٠ ل ا جو ب ظ فالي أ ا ى ك فالي JTextArea فبما ل وب فالي ا جو ب ظ ثزىج ١ و ر غ ١ و ؽغ ا ٠ ى ه فم ؽنف ا ؾغ ا واك.. غ ا جب ا ىب ف ف أ ا ؾ ا ضب األف ( ف وال ا ؾبالد اء ثو غ ١ ب أ ثب ز ١ ( ا بف ايTextArea جب و ف ق ن ايPanel ؽ ١ ش أ األف ػل غ ا ى بد ؽل ب ث ٠ غت أ ر غ ف ق ا جب -ػ ١ ر ظ ١ ١ ١ إال-. 74
أوضو ر ١ ؾ اهع ا اال ا ؤاي ف ذ أو ا اهع ا ثب ج و اث ؽ ي ايNetBeans ف ١ عل ا لغ ا و : Java and JavaFX GUI Application Learning Trail ثبأل ف Designing Java GUIs زغل كه ١ ؽ ي ا ز ١ ثب جو ب ظ اي ػ وزبة نا. NetBeans أ ٠ ب JavaFX ماع ١ ز ب وض ١ وا األ ٠ ب ا ب ١ ؽ ١ ش ٠ ؼ ا جو ب ظ ا ىز ة ث ب ف أ ر ج ١ ك اء Desktop أ Mobile ا ؽز web Application Building GUI Applications With JavaFX Getting Started With JavaFX Technology أعوث ب واؽ ى ػ ب ٠ جل ا أ ب زمج ع ١ ل ف ب ف ايInterface. ا زب ػو بهوبد ه خ ورجخ ث ا خ بثمخ ن: ع ١ غ ا بهوبد ٠ أ ج ع أ ج ػب ا ىبرت لذ اإله بي ػ ا ر بػل ٠ ب ر بى ١ ب و 3 ه 6 75