我想在面板和标签或列表框中显示原因,当我的计算机日期将是(date-before_day)时,日期和km
本文关键字:日期 计算机 我的 date-before km day 标签 列表 显示 | 更新日期: 2023-09-27 18:07:40
这是我的提醒(MySQL)表,我想在面板和带有日期和km的标签或列表框中显示原因,当我的计算机日期将是(date-before_day)
void show_reminder()
{
string date = string.Empty;
string cause = string.Empty;
string t = DateTime.Now.ToString("yyyyMMdd");
string t1 = DateTime.Now.ToString("yyyy/MM/dd");
int km, km_now, before_day, today_date, rem_date = 0;
today_date = Convert.ToInt32(t);
string myConnection = "datasource= localhost;port=3306;username=root;password=root";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand SelectCommand = new MySqlCommand("select * from bs.reminder ", myConn);//where date='" + t1 + "'
MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();
while (myReader.Read())
{
date = DateTime.Parse(myReader.GetString(2)).ToString("yyyyMMdd");
km = myReader.GetInt32(3);
before_day = myReader.GetInt32(4);
rem_date = Convert.ToInt32(date);
km_now = Convert.ToInt32(label66.Text);
if (today_date >= rem_date - before_day)
{
cause = myReader.GetString(1);
listView1.Items.Add(cause);
panel10.Visible = true;
}
else if (km_now >= km)
{
panel10.Visible = true;
}
else
panel10.Visible = false;
}
}
First:关于获取正确记录:
不确定要显示哪一天。以下是给定日期dt前后的1天,作为MySQL兼容字符串:
string sDateBefore = dt.AddDays(-1).ToString("yyyy-MM-dd");
string sDateAfter = dt.AddDays( 1).ToString("yyyy-MM-dd");
假设你想要明天的提醒记录,你可以写:
string sTomorrow = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
select可以是
MySqlCommand SelectCommand = new MySqlCommand(
"SELECT * FROM bs.reminder WHERE date = '" + sTomorrow + "';", myConn);
我假设您想在计算中使用before_day
字段。方法如下:
MySqlCommand SelectCommand = new MySqlCommand(
"SELECT * FROM bs.reminder "
+ " WHERE From_Days( To_Days( date ) - before_day ) = '" + sTomorrow + "';", myConn);
像往常一样,应该花一点时间在SQL Injection
的危险上,并考虑使用参数;但是用创建字符串的方式,我看不出这里有任何问题。
(. .这当然是最著名的临终遗言之一。
Second:关于面板和显示结果集
您想要显示一个'cause',它看起来像一个字符串字段。你不能(轻易地)使用Panel
。您可以使用Label
(关闭自动大小并按您想要的方式大小),或者更可能使用TextBox
,可能启用MultiLine
。
您可以使用Panel
将这些字段分组在一起。
如果您希望有几个提醒记录,您可以使用ListView
或ListBox
,并编写SelectionChanged
事件的脚本来显示详细信息。如果你将记录添加到Listbox
,你应该考虑创建一个提醒Class
,它可以包含一个自定义的ToString()方法。当你将该类的实例添加到ListBox
时,它将很好地显示它,并且你仍然可以将选择Item
转换为提醒并使用记录的所有字段。
显然还有DataGridview
,用于显示大型结果集。