2012-12-18 32 views
-2

我有SqlDataReader填充ExecuteDataReader聲明。 我想在填寫後在DataReader中更改一些列名。c#數據讀取器在綁定前更改字段名稱

例如填充的DataReader後我有兩個柱(A,B) 我想改變式柱'A''a'(轉換爲小寫)befor賓得網格

sqlDataReader reader; 
reader.executedatareadet(); 

reader.GetName(i) 我想成爲安倍晉三樣

reader.SetName(i) 

財產以後,但接縫,我們不能改變DataReader的列名

+0

我不確定你在問什麼。你能提供一些代碼嗎? –

+0

你能指定「我想改變一些列名」嗎?這可能有助於看到你的嘗試。 –

+1

請發表具體問題。只是「我想做點什麼」的帖子在一些討論論壇上可能是正確的,但不適合堆棧溢出。 – mah

回答

2

DataReader僅用於讀取返回的數據。您讀取這些值,然後將它們放入您自己的數據結構或變量中。

更改數據閱讀器結構的唯一方法是數據源,即格式化返回數據的SQL查詢。

+0

alex tahnk you for youre reponse。你的意思是不可能改變datareader中的列名稱填充和befor綁定到網格.. ..? – abianari

+0

您應該使用[SqlDataAdapter](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.aspx)。您可以調用'Fill(DataTable)'或'Fill(DataSet)'方法來填充一個'DataTable'對象。然後,將其綁定到網格的數據源。 –

0

然後您需要將數據存儲在您自己的變量中。運行你的executeReader()並把結果放到一個var dataHolder中。 然後通過時,DataHolder循環用

foreach(var x in dataHolder) 
    { 
     x.Property = x.Property.ToLower(); //Or something like this 
    } 

然後當你完成,你可以把時,DataHolder在網格或東西

+0

感謝'Mikey',但對於大型數據集,它是太費時間把重新安排到另一個dataholer.i不想複製數據到另一個dataholder.it有開銷 – abianari

+0

好吧,我沒有意識到你正在處理一個非常大數據集。你可以嘗試一下Linq2Sql的方法,它可以讓你直接將數據提取到一個容器中,使用你可以更新的屬性,我想你甚至可以直接在數據庫端使用Linq2Sql來執行「toLower」 –

0

介紹了閱讀和綁定之間的中間模型層。從數據讀取器讀取數據後,將數據加載到中間模型中,然後對其中的數據進行更改,然後將模型集合綁定到數據源。

相關問題