繁体   English   中英

c# 通过 DateTime.Parse 访问 DateTime UPDATE

[英]c# Access DateTime UPDATE via DateTime.Parse

OleDbConnection con = new OleDbConnection(constring)
con.Open()
cmdstring = "UPDATE table SET date="+DateTime.Parse(txtdate.Text).ToString("dd/MM/yyyy") + " WHERE id = 1"
OleDbCommand cmd = new OleDbCommand(cmdstring,con)
cmd.ExecuteNonQuery()
con.Close()

当我尝试在我的一个表单中使用此代码更新表格时,它完美地完成了。 但是在另一种形式中,我使用相同的代码来更新相同的表和相同的列,但是我遇到了一个令人困惑的错误。 语法错误(缺少运算符)

示例:txtbox 中的日期:17.1.1987

出现错误的日期:17.1.198

DateTime.Parse 没问题。 我尝试了它返回的内容。 它返回 4 位数的年份。 但是更新访问数据库时发生了什么?

问候...

始终使用参数化查询。 特别是当您在 Access 中处理日期时,您可能会遇到很多麻烦。

    DateTime dt;
    bool canParse = DateTime.TryParseExact(txtdate.Text,
                                      "dd/MM/yyyy",CultureInfo.InvariantCulture, 
                                      DateTimeStyles.None, 
                                      out dt);
    if(canParse)
    {
         string sQuery = "UPDATE table SET date = @pdate WHERE ID = @pid";
         OleDbCommand updateCmd = new OleDbCommand(sQuery, Conn);
         updateCmd.Parameters.Add("@pdate", OleDbType.Date).Value = dt;
         updateCmd.Parameters.Add("@pid", OleDbType.Integer).Value = 1; 
         int rowsAffected = updateCmd.ExecuteNonQuery();
         /* Use the result from operation for some notification */
    }
cmdstring = "UPDATE table SET date='"+DateTime.Parse(txtdate.Text).ToString("dd/MM/yyyy") + "' WHERE id = 1"

您需要在日期值前后使用单引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM