logo


פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס

איך לבצע שאילתה

יתכן והיסודות של החלק הקודם, "שאילתה פשוטה", יהיו כל מה שתצטרכו לדעת כדי ליצר שאילתות SQL ולקבל את התוצאות עליהן. בגלל ש SQL היא שפת תכנות העומדת בפני עצמה, הטכניקה מסתכמת בשימוש בשפת תכנות אחת (Perl) כדי לשלוח את הקוד של שפה אחרת (SQL) תוך תרגום, ולחזור ל Perl כדי לקבל ולטפל בתוצאות. לכן, אפילו שאילתת SQL מסובכת ניתנת לשליחה וטיפול באמצעות קוד Perl פשוט, בגלל שרוב המאמץ יעשה בתוך מנוע בסיס הנתונים.

בסקריפט שאילתת הדוגמה שלנו השתמשנו בטכניקה פשוטה כדי לאחזר את המידע המוחזר: הכנס כל שורה לתוך מחרוזת. עבור יישומים רבים זה יעבוד ממש טוב. אבל ישנם יכולות אלטרנטיביות של DBI שעשויות לעזור לכם בקבלת תוצאות מבסיס נתונים:

$sth->{NUM_OF_FIELDS};

תכונה זו של (DBI statement handle) יכולה לעזור לכם לדעת כמה שדות מוחזרים עבור כל שורה. כמובן, יתכן ואתם כבר יודעים זאת, אם בניתם את פקודת ה SQL בעצמם (כמו שעשיתם בדוגמה הקודמת), אבל אם הסקריפט שלכם בונה את הSQL מתוך התוכנה (למשל מקלט שמגיע מהמשתמש), מידע זה יתברר כשימושי!.

אם כבר מדברים על לדעת מראש, אתם אולי תוהים איך לדעת את מספר השורות שמוחזרות עבור שאילתה-לפני שאחזרתם את המידע עבור כל אחת. לעיתים ניתן לבצע זאת ולעיתים לא, תלוי באיזה תוכנת בסיס נתונים אתם משתמשים. לפי בדיקה שעשינו, אקסס לא החזירה מידע זה עבור בסיס הנתונים שלנו.

$sth->rows;

שיטה זו עשויה להחזיר 1- אם בסיס הנתונים שלכם לא מדווח על מידע כזה, שווה ניסיון!.

דרך קלה יותר לעיבוד שדות נכנסים, היא להכניס כל שורה לתוך טבלת האש (hash reference) במקום לתוך מחרוזת. בעזרת האש תוכלו לגשת לכל שדה ע"פ שמו. היזכרו בדוגמה מהפרק שאילתה פשוטה, בה רצינו לקבל שורה המכילה את השדות ClientName ו ClientEmail:

$row=$sth->fetchrow_hashref;

כעת, נוכל לגשת לכל שדה מוחזר ע"פ שמו:

while ($row=$sth->fetchrow_hashref)
	 {print "Client's Name: $row->{ClientName}\t
	         E-mail address: $row->{ClientEmail}\n"}

האש היא דרך נוחה לעיצוב שדות נכנסים לפלט מעוצב כדוגמת מסמך HTML. לפעמים אולי תרצו לרוקן את כל המידע המוחזר, לדוגמא למטרות בדיקה. תוכלו לכתוב שגרה פשוטה שתעשה זאת, או:

$sth->dump_results;

שפשוט מאחזרת את כל השורות המוחזרות ומוציאה את הפלט בפורמט פשוט.

שאילתה פשוטה
תוכן עניינים
היכן אנו עומדים

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
מבוא לבסיסי נתונים  
בסיסי נתונים SeQuel :II  
הכנת Microsoft Access  
DBI ו DBD מודולי בסיס הנתונים של Perl  
שאילתה פשוטה  
איך לבצע שאילתה  
היכן אנו עומדים  
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl