2016-04-14 55 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>它包含您的值。然後你可以用值來做任何你想要的。