一. 本地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 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 select()
{
List 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();
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 list = new CarDA().select();
if (list != null)
{
chart2.DataSource = list;
chart2.Series["Series1"].XValueMember = "id";
chart2.Series["Series1"].YValueMembers = "value";
}
}
三. 显示结果