首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# winform中怎么从数据库取数据绘制实时曲线图

2012-04-02 
C# winform中如何从数据库取数据绘制实时曲线图如题,一般画实时曲线图,都是将数据放在Point[] ptlist数组

C# winform中如何从数据库取数据绘制实时曲线图
如题,一般画实时曲线图,都是将数据放在Point[] ptlist数组中,我的数据是每隔1S存放在sql server中,用什么方法可以将数据库中的数据实时取出,然后作为实时显示曲线的数据呢?曲线的横坐标是时间,纵坐标就是数据库中的数值

[解决办法]
有个思路:
比如你图中最多显示10期数据,那么就建个Queue<T>,内存中只存放10组数据,超过的话,就存入数据库,并且删除该条数据,载入吓一跳,;
如果你是全部显示,那就放在list<t>里面吧;反正都要用到的,
[解决办法]
引用ZedGraph.dll
using ZedGraph;

C# code
GraphPane myPan = new GraphPane();        PointPairList list = new PointPairList();        Random ran = new Random();        LineItem myCurve;        DataSet ds = new DataSet();        SqlConnection myConnection = null;        SqlCommand myCommand = null;        SqlDataAdapter adapt = null;        SqlDataReader reader = null;        public Form1()        {            InitializeComponent();        }        public string GetConnectString(string server, string database, string username, string password)        {            return "Server=" + server + ";Database=" + database + ";UID=" + username + ";PWD=" + password;        }        public void Exc()        {            double x, y;            myConnection = new SqlConnection();            myConnection.ConnectionString = GetConnectString("192.168.0.101", "AMR", "sa", "123");            myCommand = new SqlCommand("select MSID,UpdateTime from Tab_BS_Dailyfile", myConnection);            myCommand.CommandType = CommandType.Text;            myConnection.Open();            adapt = new SqlDataAdapter();            try            {                //myCommand.ExecuteNonQuery();                reader = myCommand.ExecuteReader();                while (reader.Read())                {                    for (int i = 0; i < reader.FieldCount; )                    {                        y = double.Parse(reader[i++].ToString());                        x = (double)new XDate(DateTime.Parse(reader[i++].ToString()));                        list.Add(x, y);                    }                }            }            catch (SqlException ex)            {                MessageBox.Show("插入错误!" + ex.Message.ToString());            }            myCommand.Clone();            myConnection.Close();        }        private void Form1_Load(object sender, EventArgs e)        {            this.zedGraphControl1.GraphPane.Title.Text = "动态折线图";            this.zedGraphControl1.GraphPane.XAxis.Title.Text = "时间";            this.zedGraphControl1.GraphPane.X2Axis.Scale.FontSpec.Size = 28;            this.zedGraphControl1.GraphPane.YAxis.Title.Text = "数量";            this.zedGraphControl1.GraphPane.YAxis.Scale.FontSpec.Size = 8;            myPan.XAxis.Scale.IsVisible = true;            this.zedGraphControl1.GraphPane.XAxis.Type = ZedGraph.AxisType.DateAsOrdinal;            Exc();            DateTime dt = DateTime.Now;            myCurve = zedGraphControl1.GraphPane.AddCurve("My Curve",                    list, Color.DarkGreen, SymbolType.None);            this.zedGraphControl1.AxisChange();            this.zedGraphControl1.Refresh();        } 

热点排行