2012-07-24 57 views
2

我用在C#工作的WinForms .NET4应用从SQL查询C#

我的目标是填充从一个特定的SQL查询图表控件填充系列。

“选择人高度”

简单的查询,但林不知道得到这个查询结果到图表控制的最佳途径。

继承人是我迄今为止:

private void button1_Click(object sender, EventArgs e) 
     {   
      SqlConnection mainconnection = new SqlConnection("Data Source=commandhq;Initial Catalog=projecttest;Integrated Security=True"); 
      mainconnection.Open(); 
      string query = "SELECT height from persons"; 
      SqlCommand querycommand = new SqlCommand(query, mainconnection); 
      SqlDataReader querycommandreader = querycommand.ExecuteReader(); 


      Series thesqlresultsplease = new Series(); 

      //Populate series with results from the sql query 

      chart1.Series[0].XValueMember = thesqlresultsplease.XValueMember; //will this work? 

     } 

我的问题是:

我要如何从SqlDataReader的结果入编。 如果你知道更好的方法去做这个请让我知道。我即将开始一个项目,所以这将是非常有益的。

在此先感谢

+0

你使用什么图表控件?它是微软吗? – 2012-07-24 11:03:42

回答

1

开始与此:

while (querycommandreader.Read()) 
{ 
    chart1.Series[0].Points.AddY(reader.GetDouble(0)); 
} 

根据您的 “高度” 列的SQL Server数据类型,你可能有与GetDouble部分的麻烦。所以,如果你这样做,让我知道数据类型,我们会做对。

Read()方法返回一个布尔值 - true如果仍然有记录被读取,false如果您已经传递了集合中的最后一个。这就是为什么你可以简单地使用while(querycommandreader.Read()),并在循环的块中对集合中的每一行进行操作。

该系列的'Points集合有一个AddY方法,只需要一个double,并添加一个点到系列。我们传递给它的双精度来自读者当前记录的第零列。这可能是实现你想要的最简单的方法。

+0

这工作。我只是使用reader.getint32来代替。感谢您的解释 – Mat 2012-07-25 02:47:13

+0

@Mat点击它的复选框将其标记为答案。你将获得2点声望点。谢谢。 – hmqcnoesy 2012-07-25 10:34:11

0
while(querycommandreader.Read()) 
{ 
    chart1.Series[0].XValueMember = int.Parse(querycommandreader["height"]); 
}