c# 从本地数据库获取数据并以图表显示

16 篇文章 4 订阅

一. 本地mysql数据库

我的本地数据库设计是这样的

数据库服务器名称: restful_api

使用表: location

username: root

password: root

后面数据库连接部分请自行根据自己数据更改

二. 实现过程

数据模板基类:

这个类就是用于get和set操作. 对应数据格式要与数据库的字段数据格式一致.

(类似java的模型层)

class LocationData
        {
            private string _time;

            public string Time
            {
                get { return _time; }
                set { _time = value; }
            }
            private decimal _id;

            public decimal Id
            {
                get { return _id; }
                set { _id = value; }
            }

            private decimal _value;

            public decimal Value
            {
                get { return _value; }
                set { _value = value; }
            }
        }

数据库连接类:

这个类用于与本地mysql数据库建立连接, 这个类不清楚或不太理解的小伙伴要仔细理解每一段代码的含义

由于要用到MySqlConnection等mysql连接的类, 所以先把项目应用mysql安装目录下的Mysql.Data.dll.




List<CarData> list = null;
string ConString = "server=localhost;User Id=root;password=root;Database=restful_api;SslMode = none;";
MySqlConnection conn = new MySqlConnection(ConString);//连接数据库
ConString是提交数据库路径, 账号密码的, 有一点需要特别注意, SslMode=none; 如果不加这个的话就会编译失败, 因为数据库不允许ssl连接.


MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from location";//从表里选择数据,待会取前五个
MySqlDataReader dr = cmd.ExecuteReader();

MySqlCommand类是mysql数据库命令类, 这里使用的数据库操作是获取数据库location表中的所有数据.

ps: 由于mysql数据库版本不同, 它的语法也有一些不同, 如果发现错误, 请根据自己的数据库版本写正确的语句.


MySqlDataReader dr = cmd.ExecuteReader();
从数据库读入数据, 接下来就是要办数据取出来放入之前的locationdata模板中.
class LocationDA
        {
            public List<LocationData> select()
            {
                List<LocationData> list = null;
                string ConString = "server=localhost;User Id=root;password=root;Database=restful_api;SslMode = none;";
                MySqlConnection conn = new MySqlConnection(ConString);//连接数据库  
                try
                {
                    conn.Open();//打开通道,建立连接,可能出现异常,使用try catch语句
                    Console.WriteLine("已经建立连接");
                    //在这里使用代码对数据库进行增删查改
                }
                catch (MySqlException ex)
                {

                    Console.WriteLine("建立连接失败!");
                    Console.WriteLine(ex.Message);
                }
                //SqlCommand cmd = conn.CreateCommand();
                MySqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from location";//从表里选择数据,待会取前五个
                MySqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    list = new List<CarData>();
                    while (dr.Read())
                    {
                        LocationData data = new LocationData();
                        data = new LocationData();
                        data.Time = dr["time"].ToString();
                        data.Id = (int)dr["id"];
                        data.Value = (int)dr["value"];
                        list.Add(data);
                    }
                }
                return list;
                cmd.Dispose();
                conn.Close();
            }
        }

初始化操作

为了能够让程序启动就显示图标, 我们还要在Form1中加一些初始化操作

当然这里默认是柱状图, 如果想要折线图, 在chart控件的属性里更改就OK了

        //一些初始化操作
        public Form1()
        {
            InitializeComponent();
            //setChart();    //chart1
            List<CarData> list = new CarDA().select();
            if (list != null)
            {
                chart2.DataSource = list;
                chart2.Series["Series1"].XValueMember = "id";
                chart2.Series["Series1"].YValueMembers = "value";
            }
        }

三. 显示结果



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值