使用C#的一個n00b,已經使用vba一段時間並且正在逐步進行。在C#中使用SQL更新訪問數據庫 - 日期問題
我有這樣的代碼:
OleDbCommand sqlcom = new OleDbCommand("UPDATE tblpack SET packeduser = 1 AND packeddate ='" + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + "' WHERE packid = " + packid, con);
我知道它不是parametized,那將是我的下一個步驟,我真的只是學習基本知識現在。
我的問題是沒有日期部分,更新SQL工作正常。
與日期部分,沒有錯誤,但SQL不會最終發射。
我已經停止在執行非查詢和SQL看起來不錯... 我在Access中的日期字段設置爲空白,但我已經嘗試過「通用日期」,沒有運氣。
任何想法/
更新:!? 道歉你是100%正確的我不應該對安全甚至學習剋扣。 我改寫爲參數化,它正在工作。 我相信我的問題與AND,而不是在SQL(它是3am)。 Datetime.now實際上用於訪問,而不必轉換爲字符串。林不知道爲什麼這個工作..我已經讀了這麼多關於需要轉換!
OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
string strpacked = "UPDATE tblpack SET packeduser = 1, packeddate = ? WHERE packid = ?";
OleDbDataAdapter dataadapter = new OleDbDataAdapter();
OleDbCommand sqlcom = new OleDbCommand(strpacked, con);
sqlcom.Parameters.Add("?", OleDbType.Date, 5).Value = DateTime.Now;
sqlcom.Parameters.Add("?", OleDbType.Integer, 5).Value = packid;
dataadapter.SelectCommand = sqlcom;
con.Open();
sqlcom.ExecuteNonQuery();
row.Cells["clnpackeduser"].Value = "GA";
con.Close();
將值作爲參數傳遞,而不是使用字符串參數傳遞SQL字符串。 –
使用參數應該是[第一步](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/configuring-parameters-and-parameter-data-types)。 –
*「我知道它不是參數化的......我現在真的只是學習基礎知識。」* - 使用參數化查詢*是基礎知識之一。爲什麼浪費時間與「做錯了」相關的問題爭吵,何時可以繼續並「做得對」? –