Parameterized Query - צריך עזרה !

eyalweiss

New member
Parameterized Query - צריך עזרה !

אני מנסה ליצור parameterized query שבו לפי הבחירה מה - dropdown list אני יוצר את השאילתא לאחר אירוע לחיצת כפתור. השאילתא מתבצעת על הטבלה Items בה יש בין השאר את התכונה type. תוצאת השאיתא תוצג ע"י datagrid. כאשר אני מריץ אני מקבל את ההודעה המצורפת שאין לי מושג מה לעשות איתה. אני די חדש בסביבת הדוט נט ואני כרגע בונה אתר קניות וירטואלי שהחיפוש הוא חלק ממנו. תודה רבה מראש על זמנכם ועל העזרה.
 

itaym02

New member
מה שניסית לעשות הוא

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

Zeliran

New member
.......

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

Zeliran

New member
../images/Emo6.gif

איזה גל של תשובות...
 

Zeliran

New member
למשל..

sqlDataAdapter.SelectCommand.Parameters.Add ("Date", SqlDbType.SmallDateTime).​
הפרמטר הראשון הוא שם הפרמטר והשני ה SqlDbType שלו..
 

eyalweiss

New member
תודה רבה..הוא נותן לי שגיאה ליד

is this the way to get the value from the dropdown list which will be the parameter for "type" ? /**********************************************************/ sqlDataAdapter1.SelectCommand.Parameters.Add("type",System.Data.SqlDbType.VarChar); sqlDataAdapter1.SelectCommand.Parameters["type"].Value = TypeDropDown.SelectedItem.Value; dsSearch1.Clear(); sqlDataAdapter1.Fill(dsSearch1); DataGrid1.DataBind(); /**********************************************************/ the debugger says : "Incorrect syntax near 'type'" and marks the next row as the problem : sqlDataAdapter1.Fill(dsSearch1);
 

eyalweiss

New member
מיישר לשמאל...

private void GoBtn_Click(object sender, System.EventArgs e) { sqlDataAdapter1.SelectCommand.Parameters.Add("type",System.Data.SqlDbType.VarChar); sqlDataAdapter1.SelectCommand.Parameters["type"].Value = TypeDropDown.SelectedItem.Value; dsSearch1.Clear(); sqlDataAdapter1.Fill(dsSearch1); DataGrid1.DataBind(); }​
 

Zeliran

New member
.....

אני לא בטוח שהוא נותן את השגיאה בגלל זה, אבל בכל מקרה, כאשר אתה ממלא DataSet אתה צריך גם לפרט את שם הטבלה.. למשל אם קורא ל FuzzyBunney אז פקודת ה Fill שלך צריכה להיראות כך:
sqlDataAdapter1.Fill(dsSearch1, "FuzzyBunney");​
 
תשובה

שמות פרמטרים ומשתנים ב - SQL מתחילים בתו @, וזאת כדי להבדיל אותם לעמודות בטבלה. תקרא לפרמטר type@.
 
למעלה