JAVA *****: jdbc

Download Report

Transcript JAVA *****: jdbc

‫קורס ‪ Java‬מתקדם‬
‫‪JDBC‬‬
‫קרן כליף‬
‫‪ Java‬מתקדם |‬
‫‪2 | ©Keren Kalif |JDBC‬‬
‫ביחידה זו נלמד‪:‬‬
‫‪ ‬עבודה עם סביבת העבודה ‪MySql‬‬
‫‪ ‬התחברות ל‪ MySql -‬מתוך קוד ‪Java‬‬
‫‪ ‬הרצת שאילתות בסיסיות‬
‫‪ ‬עבודה עם ‪PreparedStatement‬‬
‫‪ ‬הצגת תוצאות השאילות ב‪gui -‬‬
‫‪ Java‬מתקדם |‬
‫‪3 | ©Keren Kalif |JDBC‬‬
‫התקנת סביבת העבודה ‪MySql‬‬
‫‪ ‬כדי לעבוד עם ‪ MySql‬יש להתקין ‪ XAMPP‬או ‪ WAMP‬ולדאוג שבבחירת הרכיבים בהתקנה‬
‫יהיה את ‪MySql‬‬
‫‪ ‬לאחר ההתקנה‪ ,‬יש לוודא כי ה‪ service -‬של ‪ MySql‬במצב ‪:Running‬‬
‫יתכן וה‪ service -‬של ה‪ .NET-‬רץ ותופס את‬
‫הפורט‪:‬‬
‫‪ -1‬ניתן לעצור אותו באמצעות הפקודה‪net :‬‬
‫‪stop w3svc‬‬
‫‪ -2‬לשנות את הפורט שה‪ XAMPP -‬מנסה‬
‫להתחבר ל‪ .SQL -‬הוראות בלינק‪:‬‬
‫‪http://mambycamara.wordpress.com/20‬‬
‫‪11/01/13/drupal-7-windows-7-xampp-1‬‬‫‪7/‬‬
4 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
MySql ‫עבודה עם‬
http://localhost/phpmyadmin/ :‫ כדי להיכנס לכלי‬
:‫ לצורך הדוגמא‬
survivors ‫ הנקרא‬DB ‫נייצר‬
tribes ‫נייצר בו טבלה הנקראית‬
:‫ שדות‬2 ‫לטבלה זו נגדיר‬
Auto Increment -‫ ו‬Primary Key ,INT ‫ שיהיה‬id
30 ‫ באורך‬VARCHAR ‫ שיהיה‬Name
•
•
o
o
o
‫‪ Java‬מתקדם |‬
‫‪5 | ©Keren Kalif |JDBC‬‬
‫התחברות ל‪ MySql -‬מתוך‬
‫ה‪JAVA -‬‬
‫טעינת הדרייבר של מנהל ה‪,JDBC -‬‬
‫בדוגמא זו של ‪MySql‬‬
‫הגדרת מיקום ה‪ DB -‬ושמו‪ .‬יכול כמובן‬
‫להיות על מחשב מרוחק‪.‬‬
‫הרצת שאילתא והצגת‬
‫התוצאות‬
‫סגירת ה‪-‬‬
‫‪connection‬‬
‫‪ Java‬מתקדם |‬
‫‪6 | ©Keren Kalif |JDBC‬‬
‫התחברות ל‪ MySql -‬מתוך ה‪Java -‬‬
‫‪ ‬כדי שהתוכנית תוכל לטעון את הדרייבר של מנהל ה‪ ,JDBC -‬יש להוסיף את ה‪ JAR -‬הבא‬
‫לפרוייקט‪:‬‬
7 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
Insert
connection -‫את סגירת ה‬
finally -‫נעדיף לשים ב‬
8 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
SQLException
:‫ ולכן‬,‫ הינה למעשה אוסף של חריגות‬SQLException 
‫‪ Java‬מתקדם |‬
‫‪9 | ©Keren Kalif |JDBC‬‬
‫שחרור כל משאבים‬
‫יש לשחרר את כל המשאבים‬
‫הבאים‪ ,‬וכמובן עדיף ב‪finally -‬‬
‫‪ Java‬מתקדם |‬
‫‪10 | ©Keren Kalif |JDBC‬‬
‫ארכיטקטורת העבודה מול ‪JDBC‬‬
‫קוד ה‪ JAVA -‬טוען את הדרייבר‬
‫המתאים באמצעות ה‪JdbcManager -‬‬
‫הדרייבר הוא זה המתקשר מול ה‪DB -‬‬
‫המתאים דרך הרשת‪.‬‬
‫הדרייבר הוא מחלקה של של ‪Java‬‬
‫התמונה לקוחה מ‪http://www.roseindia.net/jdbc/understanding-the-jdbc-architect.shtml :‬‬
11 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
‫טעינת הדרייבר‬
‫‪ Java‬מתקדם |‬
‫‪12 | ©Keren Kalif |JDBC‬‬
‫פקודות להרצת שאילתות מול ה‪DB -‬‬
‫‪ – executeQuery ‬מחזירה ‪ ResultSet‬עבור שאילתת ‪SELECT‬‬
‫‪ – executeUpdate ‬מריצה שאילתות שמעדכנות את בסיס הנתונים‪ .‬מחזירה את כמות‬
‫השורות שהושפעו מהפעולה‬
‫‪ – execute ‬מריצה כל סוג של שאילתא ‪ TRUE‬אם תוצר השאילתא הוא ‪ ResultSet‬ו‪-‬‬
‫‪ FALSE‬אחרת‬
‫‪ ‬הרצת מתודה שאינה תואמת את סוג השאילתא תגרור תעופה‬
‫‪ Java‬מתקדם |‬
‫‪13 | ©Keren Kalif |JDBC‬‬
‫‪TimeOut‬‬
‫תזרק ‪ SQLException‬אם לא תתקבל‬
‫תשובה בזמן המבוקש‪.‬‬
‫הפרמטר הוא בשניות‪.‬‬
‫‪ Java‬מתקדם |‬
‫‪14 | ©Keren Kalif |JDBC‬‬
‫‪Prepared Statement‬‬
‫‪ ‬ראינו הגדרת שאילתות באמצעות אובייקט ‪ Statement‬אשר משתמש במחרוזת כייצוג‬
‫לשאילתא עם ערכים‬
‫‪o‬‬
‫באופן פעולה זה ה‪ DB -‬בונה את השאילתא כל פעם בזמן ריצה ומריץ‬
‫‪ ‬ניתן לעבוד גם עם ‪ PreparedStatement‬ובמקרה זה יש אופטימיזציה המבוצעת בשלב ה‪-‬‬
‫‪ PreCompile‬ולכן יותר יעילה במקרים בהם מריצים את אותה שאילתא כמה פעמים‬
‫‪ PreparedStatement ‬יורשת מ‪ Statement -‬ולכן רק אופן שליחת הפרמטרים לשאילתא‬
‫שונה‪ ,‬ההרצה זהה‬
‫‪ Java‬מתקדם |‬
‫‪15 | ©Keren Kalif |JDBC‬‬
‫דוגמא לשימוש ב‪-‬‬
‫‪PreparedStatement‬‬
‫שותלים את הפרמטרים באמצעות שיטות‪ .‬כלומר‬
‫במקום כל '?' בשאילתא תהייה הצבה של ערך‪.‬‬
16 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
‫שדה מסוג תאריך‬
 year, month, day
 java.sql.Time  hours, minutes, seconds
 java.sql.Timestamp  year, month, day, hours, minutes,
seconds, nanoseconds
 java.sql.Date
‫‪ Java‬מתקדם |‬
‫‪17 | ©Keren Kalif |JDBC‬‬
‫דוגמא להכנסת רשומה עם תאריך‬
18 | ©Keren Kalif |JDBC
| ‫ מתקדם‬Java
‫ לטבלה‬ResultSet ‫קישור‬
‫ שבקובץ הדוגמאות‬fillTableFromDb ‫ הדוגמא‬
AbstractTableModel -‫ היורשת מ‬QueryTableModel ‫לשים לב למחלקה‬
DB -‫מחלקה יעודית לעבודה מול ה‬
o
o
‫‪ Java‬מתקדם |‬
‫‪19 | ©Keren Kalif |JDBC‬‬
‫ביחידה זו למדנו‪:‬‬
‫‪ ‬עבודה עם סביבת העבודה ‪MySql‬‬
‫‪ ‬התחברות ל‪ MySql -‬מתוך קוד ‪Java‬‬
‫‪ ‬הרצת שאילתות בסיסיות‬
‫‪ ‬עבודה עם ‪PreparedStatement‬‬
‫‪ ‬הצגת תוצאות השאילות ב‪gui -‬‬