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";
            }
        }

三. 显示结果



C# 中从数据库获取数据并分页显示,一般需要使用 SQL 语句的分页查询功能。以 SQL Server 为例,可以使用 `OFFSET...FETCH` 子句实现分页查询。具体步骤如下: 1. 在 SQL Server 中编写分页查询语句,例如: ```sql SELECT * FROM YourTable ORDER BY YourColumn OFFSET (@PageNumber - 1) * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY ``` 其中,`@PageNumber` 和 `@PageSize` 分别表示当前页码和每页显示的记录数,`YourTable` 和 `YourColumn` 分别表示要查询的数据表和排序列。 2. 在 C# 中使用 ADO.NET 连接到数据库,并执行上面的 SQL 语句。例如: ```csharp using System.Data.SqlClient; // 定义连接字符串和 SQL 语句 string connString = "YourConnectionString"; string sql = "YourSQLStatement"; // 定义每页显示的记录数和当前页码 int pageSize = 10; int currentPage = 1; // 建立数据库连接并创建 SqlCommand 对象 using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand cmd = new SqlCommand(sql, conn); // 添加参数,指定当前页码和每页显示的记录数 cmd.Parameters.AddWithValue("@PageNumber", currentPage); cmd.Parameters.AddWithValue("@PageSize", pageSize); // 打开数据库连接并执行查询 conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); // 遍历查询结果 while (reader.Read()) { // 处理查询结果 } // 关闭 SqlDataReader 和数据库连接 reader.Close(); conn.Close(); } ``` 在上面的代码中,通过 `AddWithValue` 方法向 SQL 语句中添加参数,然后使用 `ExecuteReader` 方法执行查询并获取查询结果。遍历查询结果时,可以使用 `reader` 对象的各种方法获取查询结果的值。最后,要记得关闭 `reader` 和数据库连接。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值