C#连接sqlserver数据库,插入数据,并且读取数据库数据画折线图。

这篇文章主要分为两个部分,1.连接数据库。2.读取数据库数据然后作图(chart控件)。

首先先讲一下连接数据库,我的环境是Visual Studio2010和sqlserver2012,先确保自己电脑装有数据库服务。

        private void connectButton_Click(object sender, EventArgs e)
        {
            //建立一个连接数据库的服务
            SqlConnection con = new SqlConnection();
            //data source是数据库的IP地址,. 表示的是本地ip,initial catalog是数据库的名字
            //下面两个分别是数据库的id和密码
            con.ConnectionString = "data source=.;initial catalog=DBname;user id=SA;pwd=123";
            //定义查看数据库的sqql指令
            String sql = "select * from DBname";   
            //定义sql插入语句
            String testsql = "insert into DBname(id,name) values(110,'张三')";
            try
            {
                //与数据库建立连接,如果连接失败会抛出异常
                con.Open();
                MessageBox.Show("成功连接数据库");
                //创建一个T-sql执行命令的过程
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandType = CommandType.Text;
                //插入数据
                cmd.CommandText = testsql;
                cmd.ExecuteNonQuery();
               
 
                //查询数据
                cmd.CommandText = sql;
                //执行命令并且得到一个读取sqlserver的流
                SqlDataReader dr = cmd.ExecuteReader();            
                while (dr.Read())
                {
                    // 读取数据
                   Console.WriteLine(dr[0].ToString() + "," + dr[1].ToString()); 
                }
                dr.Close();//关闭执行
            }
            catch (Exception)
            {
                Console.WriteLine("连接异常");
                throw;
            }
            finally
            {
                con.Close();
                MessageBox.Show("成功关闭数据库连接");
            }
        }

上面是一个简单的与数据库建立连接,并且执行插入和读取指令。

下面要对从数据库读取到的数据进行画图,比如,我读取到id和num两个,就要用id作为横坐标,num作为纵坐标。得到的图形大概入下面的图所示。

C#连接sqlserver数据库,插入数据,并且读取数据库数据画折线图。_第1张图片

在画图之前首先要了解一下chart控件,chart控件主要分为五大部分:

C#连接sqlserver数据库,插入数据,并且读取数据库数据画折线图。_第2张图片最重要的是ChartAreas,Series。

ChartAreas理解为讲chart分为几部分,每部分可以单独的绘制一张表出来。Series就可以理解为每张表呈现什么样的类型图(比如说折线图,柱状图,饼图),都可以在Series中设置。更多详细的内容见https://blog.csdn.net/qq_27825451/article/details/81305387这篇帖子写的很到位。

下面又先上代码,在代码中都有详细的注释。

       //查询数据库并且画图
        private void seekSql() {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "data source=.;initial catalog=FlareDB;user id=SA;pwd=123";
            try
            {
                con.Open();
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandType = CommandType.Text;
                //查询数据
                cmd.CommandText = "select * from FlareTable";
                SqlDataReader dr = cmd.ExecuteReader();
                //新建两个列表来存放我们要画图的数据,因为chart接收的数据是List
                List idList = new List();
                List numList = new List();
                while (dr.Read())
                {
                    //要注意,在数据库中得到的id的数据类型是System.Integer,
                    //num数据类型是System.Double,但是在某些列中,num是空值,所以在进行操作前            
                    //要判断是否为空
                    if (dr[1] is DBNull)
                    { }
                    else {
                            Double tempdata = (Double)dr[1];
                            varList.Add((float)tempdata);
                        }
                        idList.Add((int)dr[0]);
                    }
                }
                //画图的函数
                  drawLines(idList, varList);
 

                dr.Close();//关闭执行
            }
            catch (Exception)
            {
                Console.WriteLine("连接异常");
                throw;
            }
            finally
            {
                con.Close();
            }
        }
        //画图的函数
        private void drawLines(List list1,List list2) {
            List xData = list1;
            List yData = list2;
            //线条颜色
            chart1.Series[0].Color = Color.DeepSkyBlue;
            //线条粗细
            chart1.Series[0].BorderWidth = 1;
            //标记点中心颜色
            chart1.Series[0].MarkerColor = Color.DeepSkyBlue;
            //标记点大小
            chart1.Series[0].MarkerSize = 5;
            //标记点类型     
            chart1.Series[0].MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
            //绑定数据   
            chart1.Series[0].Points.DataBindXY(xData, yData);

        }

在上面画图的函数中,我简单的设置了表中点和线的基本样式,更多样式可以根据自己需求设置。

希望能够和大家多多交流学习,共同进步~

你可能感兴趣的:(C#,读取数据库画图)