欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#連接操作 MySQL 數(shù)據(jù)庫(kù)實(shí)例(使用官方驅(qū)動(dòng))

 更新時(shí)間:2015年02月18日 15:07:23   投稿:junjie  
這篇文章主要介紹了C#連接操作 MySQL 數(shù)據(jù)庫(kù)實(shí)例(使用官方驅(qū)動(dòng)),本文講解了C#中的Mysql連接方法和SQL操作方法,需要的朋友可以參考下

MySQL 以其免費(fèi)和足夠的性能受到很大的青睞,當(dāng)然對(duì)于國(guó)內(nèi)小公司,甚至是大公司如果對(duì)版權(quán)看得薄,敢冒險(xiǎn)的話,隨便裝個(gè) SqlServer、DB2、Oracle 都行。對(duì)于 SqlServer 數(shù)據(jù)庫(kù),因其與 MS 是一家,自然在 .net 類庫(kù)中有內(nèi)建支持,假如 MySQL 就得找第三方的驅(qū)動(dòng)了 -- .net 中多講 Provider。在這里我也是作為一個(gè)預(yù)研專題,記錄下 C# 連接 MySQL 的兩種方法,分別使用 MySQL 官方的和 SourceForge 上一個(gè)開源的 MySQL 驅(qū)動(dòng)。至于 ODBC 的辦法,就不提了,覺得意義不大,同樣要安裝個(gè) MySQL ODBC 驅(qū)動(dòng),而且 ODBC 又如此之笨拙。

使用 MySQL 官方區(qū)動(dòng)連接操作 MySQL 數(shù)據(jù)庫(kù)

下載驅(qū)動(dòng),可在 http://www.mysql.com/downloads/connector/net/6.3.html#downloads 下載,當(dāng)前版本是 6.3。你可以選擇的平臺(tái)既可以是 Microsoft Windows,也可以用 .Net & Mono 的,區(qū)別是 Microsoft Windows 的是一個(gè)MSI 文件,后者是非安裝的壓縮包。但是那個(gè) MSI 文件在我的 64 位 XP 下安裝不成功,所以用了后者。

這個(gè) connector net 不光是個(gè) MySQL 驅(qū)動(dòng),還提供了像 Entity Frameword、Asp.Net Web Providers、Compact Framework、VS 2008 集成的支持,還配置 CSharp 和 VB 的例子。詳細(xì)的配置、使用文檔請(qǐng)參考安裝目錄中的 MySql.Data.chm 文件。

現(xiàn)在從最簡(jiǎn)單的例子開始,驅(qū)動(dòng)安裝完,或壓縮包解開后,甭里安裝目錄里的 mysql.data.cf.dll、mysql.data.entiry.dll、mysql.visualstudio.dll 和 mysql.web.dll,我們暫時(shí)在項(xiàng)目中引入 mysql.data.dll,用 using MySql.Data.MySqlClient; 引入命名空間。然后簡(jiǎn)單的代碼如下:

復(fù)制代碼 代碼如下:

//連接字符串
 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();
 

上面的連接字符串應(yīng)該好理解,另外還有更多的配置參數(shù),例如端口號(hào)、連接池相關(guān)的配置等,具體請(qǐng)參考手冊(cè)中的 Connection Options。其他的操作就是標(biāo)準(zhǔn)的 ADO.NET 的了,再就是可以處理各步驟的異常,catch MySql.Data.MySqlClient.MySqlException 這個(gè)類型的異常。其他的用于填充數(shù)據(jù)的 MySqlDataAdapter 和  MySqlDataReader 也是備好了的。

我想,在做正式的應(yīng)用時(shí),為防止 SQL 注入時(shí)關(guān)于參數(shù)化查詢肯定會(huì)被提出來(lái)的,那就來(lái)看看這個(gè) MySQL 官方驅(qū)動(dòng)如何處理參數(shù)化查詢的。它所用的方式和 SqlServer Provider 是一樣的,用 @author 這樣的形式來(lái)標(biāo)識(shí)參數(shù),并且同樣支持 AddWithValue(string name, object value) 的方式。請(qǐng)看代碼:

復(fù)制代碼 代碼如下:

string sql = "update wp_posts set post_author=@author and post_status=@status where id=@id";
 
 //可以用 ? 號(hào)的形式,如,但 ? 號(hào)的形式不推薦使用
 //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();

注意到,同時(shí)還能用 ?author 的形式來(lái)標(biāo)識(shí)參數(shù),不過(guò)現(xiàn)在不推薦這么用了,也許是為了統(tǒng)一成 @author 的格式吧。不知道什么時(shí)候能像 JDBC 一樣,直接用 ? 來(lái)作為占位符。

對(duì)于 InnoDB 存儲(chǔ)引擎的 MySQL 是支持事物的,這個(gè)官方的的驅(qū)動(dòng)支持事物的代碼如下:
[code]
MySqlTransaction trans = con.BeginTransaction(); //啟用事物
 trans.Commit(); //正常時(shí)提交
 trans.Rollback(); //異常時(shí)回滾
[code]
下一篇將介紹如何使用 SourceForge 上的開源 MySQL .Net 驅(qū)動(dòng)怎么去操作 MySQL 數(shù)據(jù)庫(kù)的。

相關(guān)文章

  • Unity Shader相交算法實(shí)現(xiàn)簡(jiǎn)易防能量盾

    Unity Shader相交算法實(shí)現(xiàn)簡(jiǎn)易防能量盾

    這篇文章主要為大家詳細(xì)介紹了Unity Shader相交算法實(shí)現(xiàn)簡(jiǎn)易防能量盾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#實(shí)現(xiàn)將pdf轉(zhuǎn)文本的示例分享

    c#實(shí)現(xiàn)將pdf轉(zhuǎn)文本的示例分享

    這篇文章主要介紹了c#實(shí)現(xiàn)將pdf轉(zhuǎn)文本的示例,需要的朋友可以參考下
    2014-03-03
  • C#中括號(hào)強(qiáng)轉(zhuǎn)、as、is區(qū)別詳解

    C#中括號(hào)強(qiáng)轉(zhuǎn)、as、is區(qū)別詳解

    本文主要介紹了C#中括號(hào)強(qiáng)轉(zhuǎn)、as、is區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#使用Gembox.SpreadSheet向Excel寫入數(shù)據(jù)及圖表的實(shí)例

    C#使用Gembox.SpreadSheet向Excel寫入數(shù)據(jù)及圖表的實(shí)例

    下面小編就為大家分享一篇C#使用Gembox.SpreadSheet向Excel寫入數(shù)據(jù)及圖表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • C#各種異常處理方式總結(jié)

    C#各種異常處理方式總結(jié)

    這篇文章介紹了C#各種異常的處理方式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#多線程系列之讀寫鎖

    C#多線程系列之讀寫鎖

    本文詳細(xì)講解了C#多線程的讀寫鎖,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Visual Studio 中自定義代碼片段的方法

    Visual Studio 中自定義代碼片段的方法

    這篇文章主要介紹了Visual Studio 中自定義代碼片段的方法,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C#實(shí)現(xiàn)Windows服務(wù)測(cè)試與調(diào)試

    C#實(shí)現(xiàn)Windows服務(wù)測(cè)試與調(diào)試

    這篇文章介紹了C#實(shí)現(xiàn)Windows服務(wù)測(cè)試與調(diào)試的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 基于C#中IDisposable與IEnumerable、IEnumerator的應(yīng)用

    基于C#中IDisposable與IEnumerable、IEnumerator的應(yīng)用

    本篇文章小編為大家介紹,基于C#中IDisposable與IEnumerable、IEnumerator的應(yīng)用,需要的朋友參考下
    2013-04-04
  • VS2022+unity3D開發(fā)環(huán)境搭建的實(shí)現(xiàn)步驟

    VS2022+unity3D開發(fā)環(huán)境搭建的實(shí)現(xiàn)步驟

    本文主要介紹了VS2022+unity3D開發(fā)環(huán)境搭建的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論