【发布时间】:2016-04-16 17:39:41
【问题描述】:
我正在开发一个 C# 应用程序,该应用程序将使用位于我的网站中的远程 MySQL 数据库,该数据库托管在支持 PHP 和 MySQL 的 Linux 服务器上。
我尝试使用 datetimepicker 在 datagridview 中获取所选日期和日期。
在此处输入图片说明
当我单击按钮时,我的表单包含 2 个 datetimepicker(dateTimePicker1 和 dateTimePicker2)。它需要在数据库表中从日期开始搜索并在datagridview中显示。
我在数据库表中连接我的 datagridview。但我的问题是,当我选择某个日期并单击按钮时,datagridview 会变空。
使用php编码填充datagridview:
PHP 文件:(data.php)
<?php
$servername = "***.**.***.***";
$username = "root";
$password = "pasword";
$dbname = "databas";
$mysqli = new mysqli($servername, $username, $password, $dbname);
if ($mysqli->connect_error)
{
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT calldate,time_interval,campaign,agent FROM aster");
while($row = mysqli_fetch_array($result))
{
$rows[] = $row;
}
$result->close();
$mysqli->close();
print(json_encode($rows, JSON_NUMERIC_CHECK));
?>
用于填充 datagridview 的 c# 编码:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;
namespace HTTPDGV
{
public partial class Form2 : Form
{
class User
{
[JsonProperty("calldate")]
public string calldate { get; set; }
[JsonProperty("time_interval")]
public string time_interval { get; set; }
[JsonProperty("campaign")]
public string campaign { get; set; }
[JsonProperty("agent")]
public string agent { get; set; }
}
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
var request = (HttpWebRequest)WebRequest.Create("http://***.**.***.***/data.php");
request.Method = WebRequestMethods.Http.Get;
request.Accept = "application/json";
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader streamreader = new StreamReader(stream);
String json = streamreader.ReadToEnd();
List<User> users = JsonConvert.DeserializeObject<List<User>>(json);
dataGridView1.DataSource = users;
}
}
}
}
效果很好。
但这是我的问题
PHP 文件:(time.php)
<?php
$date1 = $_POST['calldate'];
$date2 = $_POST['calldate'];
$servername = "***.**.***.***";
$username = "root";
$password = "password";
$dbname = "database";
$mysqli = new mysqli($servername, $username, $password, $dbname);
if ($mysqli->connect_error)
{
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT calldate,time_interval,campaign,agent FROM aster_agent_performance WHERE calldate BETWEEN'$date1'AND'$date2'");
while($row = mysqli_fetch_array($result))
{
$rows[] = $row;
}
$result->close();
$mysqli->close();
print(json_encode($rows, JSON_NUMERIC_CHECK));
?>
日期时间选择器的 c# 编码:
private void btnSearch_Click(object sender, EventArgs e)
{
var date1 = dateTimePicker1.Value.Date.ToString("yyyy-MM-dd");
var date2 = dateTimePicker2.Value.Date.ToString("yyyy-MM-dd");
HttpWebRequest myRequest =(HttpWebRequest)WebRequest.Create("http://***.**.***.***/time.php");
myRequest.Method = "GET";
using (WebResponse response = myRequest.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
XmlTextReader reader = new XmlTextReader(stream);
var buffer = Encoding.UTF8.GetBytes("calldate=" + date1 + "AND" + date2 + "");
stream.Read(buffer, 0, buffer.Length);
StreamReader streamreader = new StreamReader(stream);
String json = streamreader.ReadToEnd();
string date = JsonConvert.SerializeObject(json);
dataGridView1.DataSource = date;
}
}
}
当我单击搜索按钮时,datagridview 变空。请检查我出错的代码。请提出任何在线链接或教程。
我的问题在这里:http://www.voidasks.com/c_httpwebrequest_for_datetimepicker#answers
有人对这种编码有任何想法吗,或者有人可以告诉我我是否做错了。
谢谢
【问题讨论】:
-
$date1和$date2相同的$_POST输入?你确定这是对的吗?
标签: c# php mysql datagridview