用数据集c#填充结构时使用参数吗?
我在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;
上午我理解正确,你的结构代表从表中一个元组?如果是这种情况,您应该尝试填充IEnumerable<MyStruct>
或者只从表格中获取第一个匹配的行。否则,你期望它对待返回的其余数据做什么?
所以,当我得到所有的值时,这个上面的工作,但不是当我在选择语句中使用WHERE子句。 – kakka47 2010-10-26 20:06:25
当你使用WHERE子句时会得到什么错误?是否有可能你构造不正确?在这个问题中,我注意到你在ID之前缺少一个单引号。正如Jon Skeet指出的那样,出于安全原因,您绝对应该使用参数化查询,但它也可能有助于避免这样的错误。 – StriplingWarrior 2010-10-26 20:55:34
错误是我根本没有得到任何数据,它什么都没有返回。这是真的可能我做了很多不正确的事情。这是它的外观,我认为引号是正确的:String mySQL =“SELECT * FROM tbl_test WHERE _id ='”+ id +“'”;我阅读了上面建议的IEnumberable
您是否需要迭代结果集并添加结构列表。 – brumScouse 2010-10-26 19:41:26
很难说没有看到任何代码。顺便说一句,我建议你使用参数化的查询,而不是你目前得到你的WHERE子句的方式。 – 2010-10-26 19:49:39