2010-10-26 67 views
0

我在c#中的Web服務中有一個結構。當我使用「Select * from TABLE1」時;在WebMethod中,我得到一個完全填充的結構。但是,當我添加一個WHERE子句時,我得到null作爲響應。爲什麼是這樣?我到處尋找一個簡單的解釋,但沒有找到一個。用數據集c#填充結構時使用參數嗎?

如何使用SELECT * FROM TABLE1 WHERE _id=" + id "'";如果我只想從數據庫中檢索單個帖子,它可以正常工作,但不會在獲得多行響應時使用。

是否還有一種方法在c#中以任何方式排序多行響應?

提前致謝!

編輯:

DataSet myDS = new DataSet(); 

    try 
    { 
     myConnection.Open(); 

     // Fill dataset with account data 
     //myCommand.Fill(myDS, "userdata"); 
     myAdapter.Fill(myDS, "toplista"); 

     myConnection.Close(); 

     int i = myDS.Tables["toplista"].Rows.Count; 
     toplista[] mytoplista = new toplista[i]; 
     i = 0; 


     foreach (DataRow row in myDS.Tables["toplista"].Rows) 
     { 
      mytoplista[i].name = row["_name"].ToString(); 
      mytoplista[i].points = int.Parse(row["_points"].ToString()); 
      mytoplista[i].level = row["_level"].ToString(); 

      i++; 
     } 
     return mytoplista; 
+0

您是否需要迭代結果集並添加結構列表。 – brumScouse 2010-10-26 19:41:26

+1

很難說沒有看到任何代碼。順便說一句,我建議你使用參數化的查詢,而不是你目前得到你的WHERE子句的方式。 – 2010-10-26 19:49:39

回答

1

上午我理解正確,你的結構代表從表中一個元組?如果是這種情況,您應該嘗試填充IEnumerable<MyStruct>或者只從表格中獲取第一個匹配的行。否則,你期望它對待返回的其餘數據做什麼?

+0

所以,當我得到所有的值時,這個上面的工作,但不是當我在選擇語句中使用WHERE子句。 – kakka47 2010-10-26 20:06:25

+0

當你使用WHERE子句時會得到什麼錯誤?是否有可能你構造不正確?在這個問題中,我注意到你在ID之前缺少一個單引號。正如Jon Skeet指出的那樣,出於安全原因,您絕對應該使用參數化查詢,但它也可能有助於避免這樣的錯誤。 – StriplingWarrior 2010-10-26 20:55:34

+0

錯誤是我根本沒有得到任何數據,它什麼都沒有返回。這是真的可能我做了很多不正確的事情。這是它的外觀,我認爲引號是正確的:String mySQL =「SELECT * FROM tbl_test WHERE _id ='」+ id +「'」;我閱讀了上面建議的IEnumberable ,但我必須閱讀更多才能真正理解它。 IEnumberable與像我一樣在數據集中使用循環有什麼區別? – kakka47 2010-10-26 21:06:09