Unable to convert MySQL date/time value to System.DateTime此例外很明顯的說明要將 DateTime 的格式轉換為 MySQL 可以接受的 DateTime 格式!
有兩種方式:
1、SQL 語法為自己組合而成的字串
此時只要知道 .NET DateTime 之間與 MySQL DateTime 之間格式有何不同即可。
.NET DateTime:2007/01/01 12:00:00
MySQL DateTime:2007-01-01 12:00:00
只要將年月日中間的「/」符號換成「-」即可囉!
2、由程式所自動產生的 SQL 語法
若是用了 MySqlDataAdapter、MySqlCommandBuilder、DataTable 所搭配起來的組合,若是 DateTime 的欄位,就必須要傳入 MySqlDateTime 格式的資料!
注意喔! 不是 DateTime 而是 MySqlDateTime 喔!
而 MySqlDataTime 的 class 在 MySql.Data.Type namespace 中,必須在程式前面先 using 才行,這是必須要注意的!
轉換範例如下:
當然,MySqlDateTime 的 constructor 有很多種,甚至可以傳入 .NET 的 DateTime 做為參數,詳細資料可以參考 MySQL Connector for .NET 的檔案中的文件檔,再以自己方便的方式傳入即可。//這是會發生錯誤的寫法,因為 MySQL 不接受 .NET DateTime 格式的資料
myDataTable.Rows[0]["myDateTime"] = DateTime.Parse("2007/01/01 12:00:00");
//必須初始化一個 MySqlDateTime 的物件傳入才行
myDataTable.Rows[0]["myDateTime"] = new MySqlDateTime(2007, 1, 1, 12, 0, 0);
沒有留言:
張貼留言