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

xiaoxiao2021-02-28  42

一. 本地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"; } }

三. 显示结果

转载请注明原文地址: https://www.6miu.com/read-2621141.html

最新回复(0)