1

我有一个获取 SQL 命令并返回数据集的函数。现在我正在尝试运行这个字符串命令:

@"SELECT ProductPrice 
FROM Products 
Where ProductPrice IN 
(
  SELECT ProductPrice 
  FROM Products 
  WHERE  ProductName =N'" 

+ listBox1.Text 
+ "')").Tables[0].Rows[0].ToString()

ProductPrice是一个INT
ProductName是一个NVARCHAR

我在文本框中得到了这个结果:

'系统.数据.数据行'

顺便说一句:这是一个学校项目!我知道这可能容易受到 SQL 注入的影响

4

2 回答 2

2

由于这是一个家庭作业问题,我将坚持家庭作业问题的指导方针,并尝试在不给你完整答案的情况下提供帮助。

  • 尝试提供能够引导提问者正确方向的解释。真正的理解是学生的真正目标,但尝试提供这种理解很少会因任何问题而受到赞赏。
  • 如果您认为它不会帮助学生,最好不要提供完整的代码示例,使用您的最佳判断。您可以先使用伪代码,并且本着创建编程资源的精神,您可以在适当的时间后返回并编辑您的响应以包含更完整的代码。这样,学生仍然需要编写自己的代码,但在作业结束后可以获得完整的解决方案。

首先,您的示例中缺少一些代码,但根据结果,我假设您的代码中有类似的内容:

TextboxResults.Text = MyTable.Rows[0].ToString();

您获得 System.Data.DataRow 的原因是您仅引用行(由数据适配器填充的表中的第一行),它是对象的集合。

提示:在您的 select 语句中,价格位于您已经引用的 Row内(基于 0 的索引)的第一个元素中。

较短的版本:您正在引用表格的第一行。您需要引用表格第一行中第一个单元格的内容。

由于成为一名优秀的开发人员通常意味着知道如何使用搜索,我会在谷歌上搜索以下短语并应用我刚刚告诉你的内容,你应该会得到答案:

如何访问表格中特定数据行的单元格

第二个提示:

如果我要写入第一行中第一个单元格的内容,它将如下所示:

myTable.Rows[0][0] = 1.99;

代替

myTable.Rows[0] = 1.99;
于 2013-04-02T19:11:07.927 回答
1

什穆利克,

我猜你尝试使用dataRow.ToString(). C# 不知道如何打印 DataRow 类型的对象,因为该对象可能包含不同的列。如果您想打印 ProductPrice,请尝试dataRow[0].ToString()

于 2013-04-02T19:10:53.847 回答