我的winform上有一个月。当用户单击日期时,我想检查该用户在单击的那天是否存在预约,然后显示一些信息。我使用MySQL连接器在MySQL数据库中检查此信息。我目前在表格中签入GEBRUIKER_HAS_AFSPRAAK,以获取与用户ID相对应的约会ID,然后在AFSPRAAK表中我检查了与单击月份的日期相同的日期。如果是相同的,它将返回约会的位置(将来更多信息)。
我有此代码:
public List<string> checkAfspraakDate(DateTime datum, string type, string id)
{
List<string> result = new List<string>();
List<string> result1 = new List<string>();
if (this.openConnection() == true)
{
//Afspraak_id ophalen uit Gebruiker_has_afspraak
string query = "SELECT Afspraak_id FROM Gebruiker_has_Afspraak WHERE Gebruiker_id = '" + id + "' ";
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.CommandType = CommandType.Text;
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(reader.GetString(0));
}
reader.Close();
}
cmd.Cancel();
//Afspraak gegevens uit table halen | Gebaseerd op Afspraak_id^ en datum_today
foreach (string item in result)
{
query = "SELECT afspraak_locatie FROM Afspraak WHERE id = '" + item + "' AND datum = '" + datum +"'";
MySqlCommand cmd1 = new MySqlCommand(query, connection);
cmd1.CommandType = CommandType.Text;
using (MySqlDataReader reader1 = cmd1.ExecuteReader())
{
while (reader1.Read())
{
result1.Add(reader1.GetString(0));
}
reader1.Close();
}
cmd1.Cancel();
}
return result1;
}
else
{
return result;
}
}
如果当前用户ID与表中的用户ID匹配,则第一个代码将从表'gebruiker_has_afspraak'提取" afspraak_id"。
然后," afspraak_id"将用于检查" afspraak'表中的约会,其中日期==一个月日历的点击日。
我当前正在尝试将DateTime对象与数据库中的日期进行比较,因为数据库中的日期存储为DateTime值。我还使用一个字符串尝试了,但这也没有起作用。我在" while(reader1.read())零件上获得了一个system.nullReferenceException。我认为这是因为我从数据库中获得了零,但这不是正确的,因为几乎所有日期都有约会。
由于您将C#DateTime对象与字符串连接,该字符串将导致对象上调用默认的.ToString()
。这取决于它正在运行的PC/服务器的文化。
由于mySQL具有格式YYYY-MM-DD HH:MM:SS
,这可能会有所不同,因此不会导致匹配。您需要致电datum.ToString("yyyy-MM-dd HH:mm:ss")
。
请记住,您的支票还将检查到秒匹配的日期是否,您可能只想检查日期部分。