使用C#检查数据库中是否存在当前日期

时间:2019-03-08 14:59:07

标签: c# mysql mongodb winforms

我有一个表,希望每天仅一次在其中插入数据
并实现我想检查当前日期是否在
中 通过写这些行

  DateTime date = DateTime.Now;
  MySqlCommand cmd = new MySqlCommand("SELECT * FROM `attendances` WHERE 
                                    `lecture_id` = '" + lecture_id + "' " +
                                  " AND `date` = '"+date.ToShortDateString()+"' ",con);
            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            if (reader.HasRows)
                MessageBox.Show("you can't insert");

            else MessageBox.Show("you can insert");

尽管使用相同的插入方法,但日期仍以xxxx-xx-xx格式插入数据库,并且date.ToShortDateString()返回此格式的日期 xxxx/x/x


我检查了以正确的格式手动插入日期,但这也没有用,我也尝试在sql中使用DATE函数,但这也没有用。

2 个答案:

答案 0 :(得分:3)

只需应用格式string date = DateTime.Now.ToString("yyyy-MM-dd") 并且不要在您的SQL查询中调用ToShortDateString()

您还应该使用SqlParameter,因为您的代码容易受到SQL注入攻击。

答案 1 :(得分:1)

您还可以避免在查询中使用.NET的DateTime并使用MySql的NOW()或UTC_DATE()来代替,这可能更好。如果您的代码和数据库的区域位于不同的时区。

public static vector multiplyMatrixVector(vector in, mat4x4 m){
    vector out = new vector(0,0,0);
    out.x = in.x * m.m[0][0] + in.y * m.m[1][0] + in.z * m.m[2][0] + m.m[3][0];
    out.y = in.x * m.m[0][1] + in.y * m.m[1][1] + in.z * m.m[2][1] + m.m[3][1];
    out.z = in.x * m.m[0][2] + in.y * m.m[1][2] + in.z * m.m[2][2] + m.m[3][2];
    float w = in.x * m.m[0][3] + in.y * m.m[1][3] + in.z * m.m[2][3] + m.m[3][3];
    if(w!=0.0f) {
        out.x /= w;
        out.y /= w;
        out.z /= w;
        return out;
    }
    System.out.println("W is 0.");
    return out;
}