2016-04-14 64 views
-2

我知道我可以使用while (dr.Read()) {...},但是它会循环表格中的每个字段,我想要从第一行中检索所有值,然后第二个...等等。DataReader的值逐行

比方说,我有一个这样的表:

ID--------------Value1--------------Value2------------------Value3 
1    hello    hello2     hello3 
2    hi1     hi2      hi3 
3    hey1    hey2 

我想输出:你好HI1 HEY1

从下面的评论:

标志

SqlCeCommand cmd = new SqlCeCommand(); 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = "Select * From DataLogger1 where Time BETWEEN '"+DateTimePicker.Value+"' AND '"+DateTimePicker1.Value+"' "; 
cmd.Connection = conn1; 
conn1.Open(); 
SqlCeDataReader rd= cmd.ExecuteReader(); 
while(rd.Read()) 
{ 
    Globals.Tags.Xarrray[0].Value=rd[2].ToString(); 
    Globals.Tags.Xarrray[1].Value=rd[2].ToString(); 
    Globals.Tags.Xarrray[2].Value=rd[2].ToString(); 
    Globals.Tags.Xarrray[3].Value=rd[2].ToString(); 
    Globals.Tags.Xarrray[4].Value=rd[2].ToString(); 
+6

'DataReader.Read()'循环在*行*上,不在*列*上。它已经完全符合你的要求。你怎么了?有任何示例代码? –

+0

你是说专栏? –

+0

我想将值1的列值存储为:textbox1.text = hello textboxw.text = hi1 textbox3.text = hey1 – sacpat

回答

1

嘛,所以你想先三个记录这一切都是从第2列

我想值1列的值存储为:textbox1.text =你好 textboxw.text = HI1 textbox3.text = HEY1

像这样:

using (var reader = myCommand.ExecuteReader()) { 
    if (reader.Read()) 
    textbox1.Text = Convert.ToString(reader.GetValue(1)); // hello 

    if (reader.Read()) 
    textbox2.Text = Convert.ToString(reader.GetValue(1)); // hi1 

    if (reader.Read()) 
    textbox3.Text = Convert.ToString(reader.GetValue(1)); // hey1 
} 

Just three conseq。读取,否while循环

+0

Thank you ...!它的工作原理 – sacpat

+0

@sacpat:不客气 –

0

要得到:

hello hi1 hey1 

只是忽略其他列(或者不要选择它们,如果你不需要它们)并且只输出Value1。如果你真的想保持在同一条线上,请不要换行。

+0

我想将值1的列值存储为:textbox1.text = hello textboxw.text = hi1 textbox3.text = hey1 using datareader – sacpat

0

你可以逐行阅读你的输入,用数据填充一些结构,然后用linq提取你想要的东西。

你可以这样定义的结构:

class Data 
{ 
    public string Id; 
    public string Value1; 
    public string Value2; 
    public string Value3; 
} 

然后读取所有数据。

var allData = new List<Data>(); 
while(dr.Read()) 
{ 
    var d = new Data { Id = dr.GetString(0), Value1 = dr.GetString(1), Value2 = dr.GetString(2), Value = dr.GetString(3) }; 
    allData.Add(d); 
} 

var result = allData.Select(x => x.Value1); 

结果是一个IEnumerable < string>它包含您的值。然后你可以用值来做任何你想要的。