【发布时间】:2016-04-12 18:29:08
【问题描述】:
首先,我对 C# 和 Json 很陌生。
我想在 C# GUI 中根据 mysql 表数据绘制图表。我制作了一个 PHP 文件以从 mysql 数据库表中选择数据,并使用echo json_encode(array("result"=>$result))在 json 数组中回显所选内容@
这是我的 PHP:
<?php
define('HOST','*********************');
define('USER','*********************');
define('PASS','*********************');
define('DB','***********************');
if($_SERVER['REQUEST_METHOD']=='GET'){
$start = $_GET['start'];
$ending = $_GET['ending'];
}
$con = mysqli_connect(HOST,USER,PASS,DB);
$sql = "SELECT * FROM table WHERE date_time BETWEEN '$start' and '$ending'" ;
$res = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,array('id'=>$row[0],'p_pairs'=>$row[1],'temp1'=>$row[2] ,'temp2'=>$row[3],'temp3'=>$row[4],'temp4'=>$row[5],'temp5'=>$row[6],'avg_current'=>$row[7],'avg_voltage'=>$row[8],'kw'=>$row[9],'kwh'=>$row[10]));
}
echo json_encode(array($result));
mysqli_close($con);
?>
使用该链接,我可以清楚地看到日期时间间隔之间的 json 数组。我想要的只是绘制温度值(temp1、temp2、..)、p 对值和其他带有 date_time 的图表线图读取历史数据。
当我访问 PHP 页面时,我得到的只是:
[[{"id":"1","p_pairs":"0000-00-00 00:00:00","temp1":"2","temp2":"100","temp3":"100","temp4":"100","temp5":"100","avg_current":"100","avg_voltage":"300","kw":"300","kwh":"300"},{"id":"2","p_pairs":"0000-00-00 00:00:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"3","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"4","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"}]]
注意:此处将某些日期时间设置为默认值。我只是想展示这个数组。正确的将非常适合绘制图表。
我可以使用来自 C# 的 Web 请求将这些数组放入字符串中。使用下面的代码:
System.Net.WebClient wc = new System.Net.WebClient();
byte[] raw = wc.DownloadData("url to php");
string webData = System.Text.Encoding.UTF8.GetString(raw);
如果有人可以帮我在折线图中将其绘制为 date_time Vs temp1、temp2 或 p_pairs 以及像 C# GUI 中的那样...
这对我来说将是一个很大的帮助。 提前谢谢你。
【问题讨论】:
-
首先,您应该使用 Newtonsoft 的 JSON.net 将 webData 转换为可用的 JSON 对象。查找一些关于此的教程。你想生成什么?您是否尝试生成带有图形的 jpg 或 png?还是要在网站上显示?
-
感谢您的回复。我想在我的 Winform UI 中绘制它们。这是在反序列化并采购到表格后完成的。我当前的问题是,我有六个与上面提到的相同的表。我想绘制类似 date_time vs temp1 (table1), tamp1 (table2), tamp1 (table3), tamp1 (table4), tamp1 (table5), tamp1 (table6) 的图表作为折线图。所有表都在同一个数据库中,结构相同。
-
听起来你只需要一个图形库。看看code.msdn.microsoft.com/mschart。 Infragistics、DevExpress 和其他小部件制造商有其他工具来创建图表。