2013-04-02 233 views
1

我有一个获取SQL命令并返回数据集的函数。现在,我试图运行此字符串命令:将DataSet转换为字符串或Int

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

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

ProductPriceINT
ProductNameNVARCHAR

我在文本框中得到这样的结果:

'System.Data .DataRow'

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

+1

说,如果查询是要与1场(ProductPrice)返回1行的最大,我建议你使用'ExecuteScalar'而不是'DataAdapter.Fill'等。 – shahkalpesh

+0

你在文本框中期待什么?您正在'DataRow'对象上执行'ToString()'。当然,你必须遍历行中的实际字段才能找到它们的值。请注意,我试图给你一个方向,而不是实际的答案。 – Bazzz

+0

嗯,我用另一个查询**的ToString()**技巧,它工作得很好,所以我thoght它将是相同的。 – ShmuelCohen

回答

2

由于这是一个家庭作业问题,我将坚持guidelines for homework questions并尝试在没有给出完整答案的情况下提供帮助。

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

首先,你错过了你的样品中的一些代码,但成果的基础上,我假设你已经在你的代码是这样的:

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

你得到System.Data.DataRow的原因是你只引用了行(表中由数据适配器填充的第一行),这是一个对象集合。

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

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

既然是一个优秀的开发人员往往意味着知道如何使用搜索,我想谷歌以下的短语和申请什么我只是告诉你,你应该有你的答案:

如何访问一个特定的数据行的表中的

第二提示单元:

如果我打算的内容第一行中的第一个单元格的它看起来像这样的:

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

代替

myTable.Rows[0] = 1.99; 
+0

好吧,我会谷歌它,我需要它为我的项目的其余部分。谢谢 ! – ShmuelCohen

+0

'第二提示'像魔术一样工作,谢谢! – ShmuelCohen

1

Shmulik,

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

+0

Gena, 我没有选择,dataRow [0] .ToString()。 – ShmuelCohen