【问题标题】:use parameter when populating a struct with dataset c#?使用数据集 c# 填充结构时使用参数?
【发布时间】:2011-04-30 22:51:12
【问题描述】:

我在 c# 的 Web 服务中有一个结构。当我使用“从 TABLE1 中选择 *”时;在 WebMethod 中,我得到了一个完全填充的结构。但是当我添加一个 WHERE 子句时,我得到 null 作为响应。为什么是这样?我到处寻找简单的解释,但没有找到。

如何使用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;

【问题讨论】:

  • 是否需要遍历结果集并添加结构列表。
  • 不看代码很难判断。顺便说一句,我建议您使用参数化查询而不是您当前获得 WHERE 子句的方式。

标签: c# database select struct


【解决方案1】:

我是否正确理解您的结构代表表中的单个元组?如果是这种情况,您应该尝试填充 IEnumerable<MyStruct> 或仅从表中获取第一个匹配行。否则,您希望它如何处理返回的其余数据?

【讨论】:

  • 所以,当我获得所有值时,上述方法有效,但当我在 select 语句中使用 WHERE 子句时无效。
  • 使用 WHERE 子句时遇到什么错误?是否有可能您构造不正确?在问题中,我注意到您在 ID 之前缺少单引号。正如 Jon Skeet 指出的那样,出于安全原因,您绝对应该使用参数化查询,但它也可能有助于避免此类错误。
  • 错误是我根本没有得到任何数据,它什么也没有返回。我真的有可能做错了很多。这就是它的外观,我认为引号没问题: String mySQL = "SELECT * FROM tbl_test WHERE _id= '" + id + "'";我阅读了您在上面建议的 IEnumberable ,但我必须阅读更多内容才能真正理解它。 IEnumberable 和像我一样使用循环数据集有什么区别?
  • 我不得不承认,我并没有像您这样使用数据适配器的经验,因为我几乎只使用 LINQ to Entities。而且您包含的代码并没有真正显示出足以让我做出非常有根据的猜测。您是否尝试过单步执行它以捕获 mySQL 字符串中的值,然后查看在数据库上运行相同的 SQL 时会发生什么,以确保您确实得到了一些东西?
  • 不,我没有尝试过任何事情我是一个真正的新手。我只想要一个 Web 服务来测试我在 java 中开发的应用程序,所以我对结构不太了解。我认为这是使用 Web 服务获取一组数据的最简单方法。我必须阅读这个并从一开始。感谢您的帮助,现在我有更多要 google 的内容!
猜你喜欢
  • 2018-11-06
  • 2019-03-26
  • 2018-02-14
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
相关资源
最近更新 更多