我需要遍歷一個DataTable
。我有一列名爲ImagePath
。如何遍歷一個DataTable
當我使用DataReader
我做這種方式:
SqlDataReader dr = null;
dr = cmd.ExecuteReader();
while (dr.Read())
{
TextBox1.Text = dr["ImagePath"].ToString();
}
我如何能實現使用DataTable
是一回事嗎?
我需要遍歷一個DataTable
。我有一列名爲ImagePath
。如何遍歷一個DataTable
當我使用DataReader
我做這種方式:
SqlDataReader dr = null;
dr = cmd.ExecuteReader();
while (dr.Read())
{
TextBox1.Text = dr["ImagePath"].ToString();
}
我如何能實現使用DataTable
是一回事嗎?
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
foreach(DataRow row in dt.Rows)
{
TextBox1.Text = row["ImagePath"].ToString();
}
...假定連接打開並且命令設置正確。我也沒有檢查語法,但它應該給你這個想法。
+1。你擊敗了我幾秒鐘:) – shahkalpesh 2009-11-21 04:28:12
假設有人正在尋找'linq'解決方案,並想知道上述解決方案中的'(cmd)'在哪裏? – Jogi 2016-05-07 14:39:17
@RehanKhan - 'cmd'是要執行的SQL命令。如果你使用LINQ,你可以編寫你的LINQ查詢並以這種方式得到你的結果。 – 2016-05-07 20:03:41
foreach (DataRow row in myDataTable.Rows)
{
Console.WriteLine(row["ImagePath"]);
}
我從內存中寫這個。
希望這給你足夠的提示來理解對象模型。
DataTable
- >DataRowCollection
- >DataRow
(其中之一可以使用&外表列內容該行,或者使用COLUMNNAME或有序)。
- > =包含。
您還可以使用LINQ擴展數據集:
var imagePaths = dt.AsEnumerble().Select(r => r.Field<string>("ImagePath");
foreach(string imgPath in imagePaths)
{
TextBox1.Text = imgPath;
}
以上的例子是相當有幫助的。但是,如果我們想檢查一個特定的行是否有特定的值。如果是,則刪除並中斷,如果沒有值,則發現直投錯誤。下面的代碼工作:
foreach (DataRow row in dtData.Rows)
{
if (row["Column_name"].ToString() == txtBox.Text)
{
// Getting the sequence number from the textbox.
string strName1 = txtRowDeletion.Text;
// Creating the SqlCommand object to access the stored procedure
// used to get the data for the grid.
string strDeleteData = "Sp_name";
SqlCommand cmdDeleteData = new SqlCommand(strDeleteData, conn);
cmdDeleteData.CommandType = System.Data.CommandType.StoredProcedure;
// Running the query.
conn.Open();
cmdDeleteData.ExecuteNonQuery();
conn.Close();
GetData();
dtData = (DataTable)Session["GetData"];
BindGrid(dtData);
lblMsgForDeletion.Text = "The row successfully deleted !!" + txtRowDeletion.Text;
txtRowDeletion.Text = "";
break;
}
else
{
lblMsgForDeletion.Text = "The row is not present ";
}
}
這是一個瘋狂的方式來完成刪除行!只發出一個TSQL刪除語句! – 2017-02-10 00:15:25
dr.Read()由網絡緩衝區讀取一行行,不按行從database.There行只有一個從數據庫中獲取。因此從數據表中讀取不會提供任何性能增益。 – developer747 2013-07-05 22:08:48