我知道我可以使用while (dr.Read()) {...}
但是循环我桌子上的每个字段,我想要检索第一行中的所有值,然后是第二行...依此类推。
我们说我有这样一张桌子:
ID--------------Value1--------------Value2------------------Value3
1 hello hello2 hello3
2 hi1 hi2 hi3
3 hey1 hey2
我想输出为:hello 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();
答案 0 :(得分:1)
好吧,所以你想要第一个三个记录,它们都来自第二列:
我想将Value 1列值存储为:textbox1.text = hello 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
}
只需三个 conseq。读取,没有while
循环
答案 1 :(得分:0)
获得:
hello hi1 hey1
只是忽略其他列(或者如果你不需要它们就不要选择它们)并且只输出Value1。如果你真的想把它放在同一条线上,不要换线。
答案 2 :(得分: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&lt;字符串&gt;其中包含您的值。然后,您可以使用值执行任何操作。