2013-04-02 234 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