程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#銜接操作 MySQL 數據庫實例(應用官方驅動)

C#銜接操作 MySQL 數據庫實例(應用官方驅動)

編輯:C#入門知識

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 數據庫的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved