אי התאמה של קריטריונים בחיבור לDATABASE בC# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

אי התאמה של קריטריונים בחיבור לDATABASE בC#


mimig

Recommended Posts

שלום,

ביצירת חיבור לDATABASE,

בהפעלת פונקצית

reader = comm.ExecuteReader();

מתקבלת שגיאה בהרצה,

המשתנה reader הינו NULL...

אנא עזרתכם בבקשה...

מצורף תצלום של השגיאה.

[attachment deleted by admin]

קישור לתוכן
שתף באתרים אחרים

כנראה שהבנתי את הבעיה שלי.

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

כאשר הוצאתי את הגרשיים זה הסתדר ב"ה.

זה הקוד שלי עכשיו:

comm.CommandText = "select tz from tbl_people where tz =" + tz_text.Text + " ";

הבעיה שעכשיו הוא פשוט לא מוצא כל ערך בטבלה שעונה על השאילתא הזו,

האם זה קשור לשינוי שעשיתי??

OleDbDataReader reader;

reader = comm.ExecuteReader();

reader.Read();

המשתנה reader ריק.

תודה.

אגב, איך מכניסים קוד לתיבה ע"מ להקל על הקריאה?

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

אווף.

לא, לא הבנתי.

הערך חזרה היה ריק כשבדקתי.

מסתומרת קוראת פעמיים.??

לאחר שהכנסת לתוך הreader את הcomm.ExcuteReader, עשית reader.Read() פעם ראשונה ואז לתוך הreader נכנס המידע בשורה הראשונה מתוך הDB בהתאם לשאילתה. לאחר מכן יש פעם נוספת reader.Read() ואז בעצם זה ניגש למידע בשורה השניה(אם קיים).

ולגבי הכנסה של הטקסט לתוך התיבת טקסט, אם אני זוכר נכון צריך ליהיות משהו כמו textBox.Text = "abc"

קישור לתוכן
שתף באתרים אחרים

שלום,

אני מניח שהערך בטבלה הוא VARCHAR או STRING דומה אחר ולכן השאילתה צריכה להיות משהו כזה:

select * from [tableName] where [columName]='"+TextBox.Text+"'";

שים לב שיש עוד ' בין שני הגרשיים.

בהצלחה

קישור לתוכן
שתף באתרים אחרים

נניח והוא באמת קורא את שורה מספר 2 ולא את שורה מספר 1 -

בכל זאת, קיים ערך בטבלה בשורה מספר 2, לא מבינה למה הוא לא מזהה אותו.

העניין הוא שצריך ליהיות בטבלה ערך שמתאים לשאילתה.

 comm.CommandText = "select tz from tbl_people where tz =" + tz_text.Text + " ";

ממה שאני מבין, צריך ליהיות ת.ז בטבלה ששווה לת.ז שהמשתמש מקליד.

נניח שקיימים בטבלה שני אנשים שיש להם את אותו מספר ת.ז, לדוגמא:

אבי כהן עם ת.ז של 123456789

ומוטי במבוק עם ת.ז של 123456789

אז ברגע שאת מריצה שאילתה בשביל למצוא את הת.ז של האנשים שהת.ז שלהם הוא 123456789 אז בעצם יחזרו 2 ערכים:

123456789 של אבי כהן

123456789 של מוטי במבוק

ברגע שאת עושה excuteReader בעצם נכנס המידע שכתבתי למעלה לתוך הreader.

לאחר הreader.Read() הראשון את בעצם קוראת את ה123456789 של אבי כהן

ולאחר הreader.Read() השני (בתנאי) את קוראת את ה123456789 של מוטי במבוק.

אני מניח שבהמשך הקוד את מנסה להוציא את המידע מהreader ואז את מקבלת את הת.ז של מוטי במבוק.

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

קישור לתוכן
שתף באתרים אחרים

ואאו, תודה על ההסבר המפורט..

אז איך אני מונעת את הבעיה הזו של הכפילות בעצם??

אני רוצה ליצור מצב שהשאילתא תרוץ לשורה שבה הת.ז הוא הת.ז שהוכנס לי בTEXT..

קישור לתוכן
שתף באתרים אחרים

ואאו, תודה על ההסבר המפורט..

אז איך אני מונעת את הבעיה הזו של הכפילות בעצם??

אני רוצה ליצור מצב שהשאילתא תרוץ לשורה שבה הת.ז הוא הת.ז שהוכנס לי בTEXT..

השאילתה רצה לשורה שבה הת.ז הוא הת.ז, רק קריאה מהreader נעשת פעמיים.

הפתרון מאוד פשוט, מחקי את reader.Read() הראשון (ישר אחרי הexcuteReader), ואז לתוך סתם איזה Label שישמש לבדיקה, תכניסי את reader.GetString() ואז את אמורה לראות את הת.ז שכתוב לך בתיבת טקסט. רק חשוב שתעשי את הפעולות האלה אחרי התנאי שבו יש את הreader.Read()

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...