我有一个表,希望每天仅一次在其中插入数据
并实现我想检查当前日期是否在
中
通过写这些行
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
。
DATE
函数,但这也没有用。
答案 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;
}