Transcript JAVA

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