我正在尝试将c#datetime存储到oracle数据库中,因为它存储的时间戳没有问题,但是当我尝试从数据库中选择该特定日期的数据时,它给出了错误,因为它无效月份。
DateTime sessiondate =DateTime.Now();
int userid_int = 101;
string userTypeis ='ENGINEER';
string get_Log_query = "SELECT LOG_ID FROM JOINTING_LOGIN_LOG where USER_ID="+userid_int+" and USER_TYPE='"+userTypeis+"' and SESSION_START='"+sessiondate+"'";
答案 0 :(得分:5)
string get_Log_query = "SELECT LOG_ID FROM JOINTING_LOGIN_LOG where USER_ID="+userid_int+" and USER_TYPE='"+userTypeis+"' and SESSION_START='"+sessiondate+"'";
您永远不应该使用字符串连接来构建带参数的查询。参数化查询将更快,并帮助您避免SQL Injection和类型转换的麻烦。如果SESSION_START确实是时间戳,那么您的代码将是 -
string get_Log_query =
@"SELECT LOG_ID
FROM JOINTING_LOGIN_LOG
WHERE USER_ID= :USER_ID
and USER_TYPE= :USER_TYPE
and SESSION_START= :SESSION_START";
cmd.Parameters.Add("USER_ID", OracleDbType.Decimal, userid_int, ParameterDirection.Input);
cmd.Parameters.Add("USER_TYPE", OracleDbType.Varchar2, userTypeis, ParameterDirection.Input);
cmd.Parameters.Add("SESSION_START", OracleDbType.TimeStamp, sessiondate, ParameterDirection.Input);