【问题标题】:populate a series from a sql query C#从 sql 查询 C# 填充系列
【发布时间】:2012-07-24 11:02:01
【问题描述】:

我正在使用 C# winforms .NET4 应用程序

我的目标是从特定的 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 的结果放入系列中。 如果您知道更好的解决方法,请告诉我。我即将开始一个项目,所以这将非常有帮助。

提前致谢

【问题讨论】:

  • 您使用什么图表控件?是微软吗?

标签: c# sql winforms charts


【解决方案1】:

从这里开始:

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

根据“HEIGHT”列的 Sql Server 数据类型,GetDouble 部分可能存在问题。因此,如果您这样做,请告诉我数据类型,我们会正确处理。

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

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

【讨论】:

  • 这行得通。我只是使用了 reader.getint32 。谢谢解释
  • @Mat 通过单击复选框将其标记为答案。您将获得 2 点声望。谢谢。
【解决方案2】:
while(querycommandreader.Read())
{
   chart1.Series[0].XValueMember = int.Parse(querycommandreader["height"]);
}

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多