在.NET中要訪問MySql,我採用的是MySql官方提供的.NET connector,此驅動只需要下載即可使用:http://dev.mysql.com/downloads/connector/net/1.0.html
在使用中積累了幾點經驗:
1)使用Parameter參數形式提交Command時必須要把"@"號換成"?"號,這一點讓我困惑了一天,只是不明白MySQL為何要搞特殊呢,象MS、ODP.NET for Oracle、OleDb等方式,都是用"@"號的。
例子如下:
string connstr=Setting.Instance().GetConnectionString("MySql");
MySqlConnection conn =new MySqlConnection(connstr);
conn.Open();
string query = "insert into myfirst(Id,Name) values(?Id,?Name)";
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlParameter para1=new MySqlParameter("?Id",DbType.Int32); //這裡要注意必須要用?號
MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//這裡要注意必須要用?號
para1.Value=5;
para2.Value="ddd";
cmd.Parameters.Add(para1);
cmd.Parameters.Add(para2);
cmd.ExecuteNonQuery();
2)在MySQL中也有保留字,為了提供相容,我必須要找到定界符,好不容易在MySql的論壇裡找到了,使用的定界符是`,這個符號不是單引號,而是鍵盤上數字1前面的那個“點”,真是害死我啊。
3)MySQL中的TOP功能倒是非常簡單,只需要語句後面使用“limit n”就行了,這比ORACLE的那Rownum方便多了。
使用MySql 的.NET Connector訪問MySQL總體來說還算不錯的,大部分是相容.NET中的IConnection、ICommand的。
PS:有個不明白就是在.NET Connector中提供一個MySqlDateTime類,不知道這個類具體有什麼用,怎麼用,在國內沒有找到相關的資料。MySqlDateTime跟System.Date還不相容,在MySQL論壇上相關文章N多。
如果採用String類型的Parameter傳遞給MySql的DateTime欄位會報:Unable to Convert MySql Date/Time value to System.DateTime 的錯誤。
所有相關的MySQL的問題可以去:http://forum.mysql.com/ 論壇看看:)