2012-12-18 28 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

介绍了阅读和绑定之间的中间模型层。从数据读取器读取数据后,将数据加载到中间模型中,然后对其中的数据进行更改,然后将模型集合绑定到数据源。

相关问题