只是一直忘記寫筆記,而且程式碼也不知道放到哪去了
剛好最近又遇到所以還是寫篇文章來紀錄
程式碼如下,看起來單純在撈資料,並將資料給予DataGridView作顯示而已
Code:
using MySql.Data.MySqlClient; using System; using System.Data; using System.Windows.Forms; namespace Sample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { using (MySqlConnection conn = new MySqlConnection("server={0};database={1};uid={2};pwd={3};charset=utf8;Allow Zero Datetime = true;")) { conn.Open(); using (MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT date FROM test;", conn)) { DataSet set = new DataSet(); adapter.Fill(set); dataGridView1.DataSource = set.Tables[0]; } } } } }
執行結果:
顯示出來的數值也沒什麼錯誤
但是當修改了該日期的數值就會噴出以下錯誤
這時可以透過Style或是DateTime去解決,不過在此不提這些方法
這次要提出的方法是透過MySQL的方法Date_Format去解決
可以看到下方程式碼與上面差異在於搜尋語法有異動
修改前顯示的日期為2014/6/24,這樣的格式不符和.Net
而我們希望日期格式能符合.Net能接受的
所以我們透過Date_Format的方法去設定格式內容
%Y:顯示年的四個數字,亦即2000 %c:顯示月份數字,亦即一月則為1 %d:顯示日期,一號而言則為01
//修改前 using (MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT date FROM test;", conn)) //修改後 using (MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT DATE_FORMAT(date, '%Y%c%d') as date FROM test;", conn))
修改後Code:
using MySql.Data.MySqlClient; using System; using System.Data; using System.Windows.Forms; namespace Sample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { using (MySqlConnection conn = new MySqlConnection("server={0};database={1};uid={2};pwd={3};charset=utf8;Allow Zero Datetime = true;")) { conn.Open(); using (MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT DATE_FORMAT(date, '%Y%c%d') as date FROM test;", conn)) { DataSet set = new DataSet(); adapter.Fill(set); dataGridView1.DataSource = set.Tables[0]; } } } } }
可以看到下方結果,顯示畫面與修改前差異不大
但在修改數值時不會出錯
修改後執行結果:
參考資料:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format