[英]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.