ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
מיוסט_שרוןלא בפורום כעת ת.הצטרפות: 30/04/2004 · הודעות: 948 · מיקום: ירושלים
 

הודעה פורסם: 21/08/2014 - 15:30
נושא ההודעה: כיצד ניתן למנוע הכנסת נתונים שגויים ב- SQLITE

שלום

יצרתי טבלה כך:
קוד:
CREATE TABLE 't_test' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT, 'projects_id' INT4, 'date' DATETIME, 'phone' VARCHAR(10))


כך שאני מצפה שלשדה phone יהיה ניתן לתת רק 10 תווים
ולשדה date יהיה ניתן לתת רק תאריך

העניין שבפועל זה לא קורה הוא נותן לי להכניס לשדה phone יותר מ- 10 תווים וכן לשדה תאריך הוא נותן להכניס תווים סתם שבכלל הם לא תאריך

תודה
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 21/08/2014 - 16:19
נושא ההודעה:

אל תשתמש ב sqlite ישירות אלא בספריה עוטפת שמטפלת בהכל? זה גם יותר נוח, גם יותר בטוח וגם מטפל בשטויות כאלה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 21/08/2014 - 17:44
נושא ההודעה:

זה פיטצ'ר, לא באג.
SQLite לא שומר באמת מידע כמו שאתה חושב שהוא שומר.

ד"א אתה גם יכול לשים שדה מספרי בvarchar והוא יתנהג כמספר. יש לך API ותעוד שלם בנושא של SQLite.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 21/08/2014 - 17:46
נושא ההודעה:

Anonymous :
זה פיטצ'ר, לא באג.
SQLite לא שומר באמת מידע כמו שאתה חושב שהוא שומר.

ד"א אתה גם יכול לשים שדה מספרי בvarchar והוא יתנהג כמספר. יש לך API ותעוד שלם בנושא של SQLite.


שכחתי להוסיף את הקישור שיעזור לך:
http://www.sqlite.org/faq.html
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 21/08/2014 - 17:56
נושא ההודעה:

הציעו פה הרבה דברים מורכבים (תוככי sqlite core\library\wrapper )
הדבר הפשוט ביותר , הוא לבצע בדיקת קלט לפני שימוש ישיר ב sqlite
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מיוסט_שרוןלא בפורום כעת ת.הצטרפות: 30/04/2004 · הודעות: 948 · מיקום: ירושלים
 

הודעה פורסם: 21/08/2014 - 18:40
נושא ההודעה:

תודה

אם כך אז למה צריך להגדיר מראש בכל שדה איזה סוג נתונים

בכל שפה תכנות למשל יש הגדרת משתנים כסוג מסויים ואז אם אני מנסה להכניס נתון לא נכון אני מקבל שגיאה

ואם אני צריך כל פעם לעשות בדיקה באופן עצמאי מה הועיל המנוע

תודה
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/08/2014 - 14:36
נושא ההודעה:

תקרא קצת על type affinity
http://www.sqlite.org/datatype3.html
queency.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 22/08/2014 - 15:32
נושא ההודעה:

Anonymous :
תקרא קצת על type affinity
http://www.sqlite.org/datatype3.html
queency.


שלום,

קראתי אבל למען האמת עדיין אני לא מבין בשביל מה כל זה ולמה אם כך צריך להגדיר מראש כל משתנה.

אבל בכל אופן זה מה שיש אם כך זה מכוון.

תודה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אוריבלא בפורום כעת ת.הצטרפות: 30/10/2003 · הודעות: 445 ·
 

הודעה פורסם: 23/08/2014 - 19:43
נושא ההודעה:

Anonymous :
קראתי אבל למען האמת עדיין אני לא מבין בשביל מה כל זה ולמה אם כך צריך להגדיר מראש כל משתנה.


צריך להגדיר מראש כל שדה מכיוון שכך זה בשפת SQL, אפילו שספציפית SQLite לא מקפיד על התאמה בין נתונים לסוג השדה. רוב בסיסי הנתונים שנותנים ממשק SQL כמו MySQL, PostgreSQL, וכו' אכן מקפידים על זה.

ככלל, SQLite הוא מוצלח מאוד כל זמן שמכירים את המגבלות שלו וברירות המחדל שלו -- לדוגמא, הוא לא אוכף referential integrity - כלומר, את זה ש- foreign keys אכן מצביעים לרשומה תקינה - אלא אם כן מפעילים זאת במיוחד עם הוראת pragma.

אם אתה רוצה לסמוך על בסיס נתונים שיבדוק אותך ויוודא שההגדרות תקינות, אני ממליץ לעבור ל- postgresql או ל- firebird/phoenix.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2139 ·
 

הודעה פורסם: 25/08/2014 - 01:19
נושא ההודעה:

קרא גם כאן :
http://www.sqlite.org/faq.html#q3

תקרא את הפיסקה הזאת :
(3) SQLite lets me insert a string into a database column of type integer!

אני לא הייתי מוותר על SQLITE כל כך בקלות יש הרבה מה ללמוד ממנו .

קרא זאת:
SQLite does use the declared type of a column as a hint that you prefer values in that format. So, for example, if a column is of type INTEGER and you try to insert a string into that column, SQLite will attempt to convert the string into an integer. If it can, it inserts the integer instead. If not, it inserts the string. This feature is called type affinity.

בכל מקרה יש גם דרך לכפות לקבל ערכי INTEGER לשדות שלך.
אני חושב משהו עם CHECK או עם IF או ביחד .

_________________
מערכת: GNU/Linux debian
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2139 ·
 

הודעה פורסם: 25/08/2014 - 01:28
נושא ההודעה:

תבדוק את זה:
אני חושב שזה התחלה של מה שאתה מחפש
תבדוק את התגובות עם ה "check"

http://stackoverflow.com/questions/2761563/sqlite-data-types

_________________
מערכת: GNU/Linux debian
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. מיוסט_שרון
  2. אורח
  3. אורח
  4. אורח
  5. אורח
  6. מיוסט_שרון
  7. אורח
  8. אורח
  9. אוריב
  10. queency
  11. queency