C#銜接操作 MySQL 數據庫實例(應用官方驅動)。本站提示廣大學習愛好者:(C#銜接操作 MySQL 數據庫實例(應用官方驅動))文章只能為提供參考,不一定能成為您想要的結果。以下是C#銜接操作 MySQL 數據庫實例(應用官方驅動)正文
MySQL 以其收費和足夠的機能遭到很年夜的喜愛,固然關於國際小公司,乃至是年夜公司假如對版權看得薄,敢冒險的話,隨意裝個 SqlServer、DB2、Oracle 都行。關於 SqlServer 數據庫,因其與 MS 是一家,天然在 .net 類庫中有內建支撐,假設 MySQL 就得找第三方的驅動了 -- .net 中多講 Provider。在這裡我也是作為一個預研專題,記載下 C# 銜接 MySQL 的兩種辦法,分離應用 MySQL 官方的和 SourceForge 上一個開源的 MySQL 驅動。至於 ODBC 的方法,就不提了,認為意義不年夜,異樣要裝置個 MySQL ODBC 驅動,並且 ODBC 又如斯之愚笨。
應用 MySQL 官方區動銜接操作 MySQL 數據庫
下載驅動,可在 http://www.mysql.com/downloads/connector/net/6.3.html#downloads 下載,以後版本是 6.3。你可以選擇的平台既可所以 Microsoft Windows,也能夠用 .Net & Mono 的,差別是 Microsoft Windows 的是一個MSI 文件,後者長短裝置的緊縮包。然則誰人 MSI 文件在我的 64 位 XP 下裝置不勝利,所以用了後者。
這個 connector net 不但是個 MySQL 驅動,還供給了像 Entity Frameword、Asp.Net Web Providers、Compact Framework、VS 2008 集成的支撐,還設置裝備擺設 CSharp 和 VB 的例子。具體的設置裝備擺設、應用文檔請參考裝置目次中的 MySql.Data.chm 文件。
如今從最簡略的例子開端,驅動裝置完,或緊縮包解開後,甭裡裝置目次裡的 mysql.data.cf.dll、mysql.data.entiry.dll、mysql.visualstudio.dll 和 mysql.web.dll,我們臨時在項目中引入 mysql.data.dll,用 using MySql.Data.MySqlClient; 引入定名空間。然後簡略的代碼以下:
//銜接字符串
string connStr = "Server=localhost;Database=unmicc;Uid=unmicc;Pwd=xxxxxx;CharSet=utf8;";
MySqlConnection con = new MySqlConnection(connStr);
con.Open();//翻開銜接
MySqlCommand cmd = new MySqlCommand("select now()",con);
object time = cmd.ExecuteScalar(); //或是 cmd.ExecuteReader();cmd.ExecuteNonQuery();
MessageBox.Show(time.ToString());
//或 Console.WriteLine(time.ToString());
con.Close();
下面的銜接字符串應當好懂得,別的還有更多的設置裝備擺設參數,例如端標語、銜接池相干的設置裝備擺設等,詳細請參考手冊中的 Connection Options。其他的操作就是尺度的 ADO.NET 的了,再就是可以處置各步調的異常,catch MySql.Data.MySqlClient.MySqlException 這個類型的異常。其他的用於填湊數據的 MySqlDataAdapter 和 MySqlDataReader 也是備好了的。
我想,在做正式的運用時,為避免 SQL 注入時關於參數化查詢確定會被提出來的,那就來看看這個 MySQL 官方驅動若何處置參數化查詢的。它所用的方法和 SqlServer Provider 是一樣的,用 @author 如許的情勢來標識參數,而且異樣支撐 AddWithValue(string name, object value) 的方法。請看代碼:
string sql = "update wp_posts set post_author=@author and post_status=@status where id=@id";
//可以用 ? 號的情勢,如,但 ? 號的情勢不推舉應用
//string sql = "update wp_posts set post_author=?author and post_status=?status where id=?id";
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@author", 1);
//cmd.Parameters.AddWithValue("?author", 1);
cmd.Parameters.AddWithValue("@status", "publish");
//cmd.Parameters.AddWithValue("?status", "publish");
cmd.Parameters.AddWithValue("@id", 23);
//cmd.Parameters.AddWithValue("?id",23);
cmd.ExecuteNonQuery();
留意到,同時還能用 ?author 的情勢來標識參數,不外如今不推舉這麼用了,或許是為了同一成 @author 的格局吧。不曉得甚麼時刻能像 JDBC 一樣,直接用 ? 來作為占位符。
關於 InnoDB 存儲引擎的 MySQL 是支撐事物的,這個官方的的驅動支撐事物的代碼以下:
[code]
MySqlTransaction trans = con.BeginTransaction(); //啟用事物
trans.Commit(); //正常時提交
trans.Rollback(); //異常時回滾
[code]
下一篇將引見若何應用 SourceForge 上的開源 MySQL .Net 驅動怎樣去操作 MySQL 數據庫的。