2010-10-26 87 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