ExecuteScalar

אוהדד

New member
איך אני מקבל את מס' הרשומות שבטבלה?

יש לי משפט select count(*) from forums הצלחתי לקבל את התשובה לתוך משתנה #C ע"י DataReadet, אבל הבנתי שמכיוון שהתשובה היא ערך אחד, יש דרך יותר פשוטה לעשות זאת ?
 

אוהדד

New member
כן, עלתי על זה... אבל :

קרא בבקשה את הודעה מתחתי, עם הכותרת "ממצא חשוב"...
 

אוהדד

New member
../images/Emo26.gif ממצא חשוב : ../images/Emo36.gif

ביצוע הפקודה :
int myCounter = (int)countCmd.ExecuteScalar();​
עפה עם השגיאה : Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. אך אם כותבים את הפקודה ללא ההסבה :
countCmd.ExecuteScalar();​
זה לא עף ! ניסיון נוסף שעשיתי הוא במקום הסבה ל int - הסבה ל string - גם זה *לא* עף. וב DEBUG אני רואה שה string הוא NULL... האם זה אומר בעצם שהיפה לא החזירה כלום, ולכן ההסבה עפה ? (כי אין מה להסב...) איך יכול להיות ? השליפה תקינה ועושה (*)count...
 

gilad g

New member
אז כנראה שהשליפה לא תקינה...

ולא החזירה רשומות בכלל. רעיון טיפה פרוע: נסה במקום (*)count לכתוב (count(some_field... אולי זה יעבוד
 

אוהדד

New member
למרות שכאשר אני מריץ את השליפה

באופן עצמאי (לא בקוד) - היא עובדת היטב ?
 

gilad g

New member
כן

לאקסס יש כל מיני מוזרויות... (אתה עובד עם אקסס, נכון?
)
 

אוהדד

New member
לא עוזר... ../images/Emo10.gif

גם כך זה לא עובד... ניסיתי אפילו select 1 from mytable (שמחזיר הרבה רשומות, וה ExecuteScalar אמור לקחת את הראשונה), עדיין לא עובד...
 

אוהדד

New member
ניסיון שונה :

גם זה מעיף שגיאה :
OleDbCommand myCmdCheck = new OleDbCommand("select 1 from items",myConn); OleDbDataReader myReader = myCmdCheck.ExecuteReader(); myReader.Read(); string a = myReader.GetString(0);​
השגיאה : Index was outside the bounds of the array. יורדות לי כבר דמעות
 
למעלה