最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用開源驅(qū)動(dòng)連接操作MySQL數(shù)據(jù)庫(kù)

 更新時(shí)間:2015年02月18日 15:11:41   投稿:junjie  
這篇文章主要介紹了C#使用開源驅(qū)動(dòng)連接操作MySQL數(shù)據(jù)庫(kù),本文講解使用SourceForge上的mysqldrivercs驅(qū)動(dòng)連接操作MySQL數(shù)據(jù)庫(kù),需要的朋友可以參考下

前面一篇 http://www.fzitv.net/article/61219.htm 講了 C# 里用 MySQL 官方驅(qū)動(dòng)怎么去連接操作 MySQL 驅(qū)動(dòng),就是 MySQL 的 JDBC 驅(qū)動(dòng)有兩個(gè)一樣,針對(duì) .NET 的 MySQL 驅(qū)動(dòng)也有兩個(gè)。這里介紹的就是 .NET 連接 MySQL 的第二個(gè)驅(qū)動(dòng),來自于 Sourceforge 的開源驅(qū)動(dòng)。

首先,到 http://sourceforge.net/projects/mysqldrivercs/ 下載,寫此篇時(shí)下載的版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe。安裝,其中帶有源代碼和例子,只有三個(gè)動(dòng)態(tài)庫(kù) libmySQL-4.0.dll、libmySQL.dll、MySQLDriverCS.dll,光看動(dòng)態(tài)庫(kù)好像不及官版的驅(qū)動(dòng)強(qiáng)大。把安裝目錄中的 MySQLDriverCS.dll 引入到你的 C# 項(xiàng)目中就可以開始用了。具體用法還需時(shí)刻關(guān)注安裝目錄中的 help\SDK\Documentation.chm 幫助文檔。

也還是圍繞著這么幾個(gè)問題來展開:

基本的用法,如連接字符串的寫法,基本查詢操作,大概會(huì)用到哪些類
異常的處理
事物的處理
參數(shù)化的查詢支持

這次我會(huì)在一個(gè)例子中涉及到以上四個(gè)方面,下面這個(gè)片代碼有點(diǎn)混亂,使用時(shí)請(qǐng)讀懂來,然后才能各取所需:

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

using System;
using System.IO;
 
using MySQLDriverCS; //引入的命名空間就這個(gè)
using System.Data.Common;
 
namespace cc.unmi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //MySQLDriverCS 有了 MySQLConnectionStringBuilder 和 MySQLConnectionString 來構(gòu)造連接字符串
            //其實(shí)反而有點(diǎn)故弄玄虛,也許是以前直接用連接字符串習(xí)慣了
            MySQLConnectionString conStr = new MySQLConnectionString("localhost", "unmi_db", "unmi", "xxxxxx");
 
            //從 MySQLConnectionStringBuilder 來看似乎可支持的屬性較少,不知道連接池那些功能怎么樣
            //string connStr = "Data Source=unmi_db;Password=xxxxxx;User ID=unmi;Location=localhost;Port=3306;Extended Properties=";
 
            MySQLConnection conn = new MySQLConnection(conStr.AsString); //或 new MySQLConnection(connStr);
 
            conn.Open();
 
            //參數(shù)用 @, 同樣支持 ? 的方式, 應(yīng)該也是不推薦用 ? 的形式
            //string sql = "update wp_options set option_value='http://unmi.cc' where option_id=?id and <a href="mailto:option_name=@name">option_name=@name</a>";
            string sql = "select option_name from wp_options where option_id=?id and <a href="mailto:option_name=@name">option_name=@name</a>";
 
            MySQLCommand com = new MySQLCommand(sql, conn);
 
            MySQLParameter paraId = new MySQLParameter("?id", 1);
            MySQLParameter paraName = new MySQLParameter("@name", "siteurl");
 
            //其實(shí)是加在 MySQLParameterCollection 里的
            //看起來與 AddWithValue() 有異曲同功之妙,比如可寫成 com.Parameters.Add(new MySQLParameter("@id",1);
            com.Parameters.Add(paraId);
            com.Parameters.Add(paraName);
 
            //如果是查詢
            //MySQLDataReader dr = com.ExecuteReaderEx();//執(zhí)行 ExecuteReaderEx() 返回的才是 MySQLDataReader
 
            DbTransaction trans = conn.BeginTransaction(); //開啟事物
 
            try
            {
                //com.ExecuteNonQuery();
                //還要執(zhí)行更多的語句時(shí)應(yīng)使用事物
                Console.WriteLine(com.ExecuteScalar().ToString());
                trans.Commit();
            }
            catch (MySQLException ex)
            {
                Console.WriteLine(ex.Message);
                trans.Rollback();
            }
            finally
            {
                conn.Close();
            }
 
            Console.ReadKey();
        }
    }
}

雖說那個(gè)驅(qū)動(dòng)文件名中有 DotNet2.0 字樣,應(yīng)該只要是 2.0 及以上的 .Net 運(yùn)行時(shí)就行的,我是在 32 位的 XP 下,Visual Studio 2008 中,用 .Net 3.5 來跑的,沒有問題。

備注一下,在我家里的電腦上卻是運(yùn)行不起來,提示是:

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

{"Could not load file or assembly 'MySQLDriverCS, Version=3.0.1735.36021, Culture=neutral, PublicKeyToken=172f94dfb0faf263' or one of its dependencies. An attempt was made to load a program with an incorrect format."}

又是我那可惡的 64 位 XP,它只能支持 32 位的應(yīng)用,與官版的驅(qū)動(dòng)表現(xiàn)不一樣。官版的 MSI 程序不能在我的 64 位系統(tǒng)下安裝,但安裝包中的 .dll 是可在 64 位下用。而這個(gè)版本的驅(qū)動(dòng)是能安裝,但用起來告訴我不行,明擺著是甩我。其實(shí)在下載驅(qū)動(dòng)的網(wǎng)頁(yè)上有注明用了 32 位的各種 Winows 操作系統(tǒng)云云。

最后簡(jiǎn)單說下與官版的驅(qū)動(dòng)的少許差異,連接字符串上沒有官版驅(qū)動(dòng)豐富,且不知對(duì)連接池的支持如何。在用參數(shù)化查詢?cè)O(shè)置參數(shù)時(shí),雖然比標(biāo)簽的 ADO.Net 方便,便比起官版的可用 AddWithValue() 方法稍微遜色。再就是在 64 位下根本無法運(yùn)行,這可不能不算是個(gè)致使傷,服務(wù)器下 64 位系統(tǒng)在所難免。

然而這個(gè)開源驅(qū)動(dòng)也有些獨(dú)到之處,那就是它提供的 MySQLInsertCommand、MySQLSelectCommand、MySQLUpdateCommand 和 MySQLDeleteCommand 類方便了數(shù)據(jù)操作,不需要你顯式的去寫 SQL 語句,很像 WordPress 的 $wpdb 中相應(yīng)的幾個(gè)函數(shù):$wpdb->insert()、$wpdb->query()、$wpdb->update() 和 $wpdb->delete()。

本不應(yīng)該把這個(gè)驅(qū)動(dòng)這么鮮明的幾個(gè)特性放后面的。大概看下這幾個(gè)函數(shù)的操作:

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

 new MySQLInsertCommand(
                dbCon,//連接
                new object[,] { //字段名及對(duì)應(yīng)值
                    {"SettingID",100},
                    {"SettingValue","http://www.fzitv.net"}
                },
                "Settings" //表名
            ); //new 后即執(zhí)行,可用 bSuccess 與 Query 屬性分別獲得成功與否及相應(yīng)的 SQL
 
            //這個(gè) MySQLSelectCommand 有點(diǎn)讓人蛋疼,還不如直接 SQL 痛快
            DataTable dt = new MySQLSelectCommand(dbCon, //連接
                new string[] { "SettingID", "SettingValue" },//要查詢的字段列表
                new string[] { "Settings" }, // 要查詢的表,可以多個(gè)
                new object[,] { { "SettingID", "=", 100 } },//條件
                null,
                null //后面還可以有 limit, distinct 等指令及參數(shù)
            ).Table; //獲得 DataTable
 
            //更新時(shí)用這種方式還算方便
            new MySQLUpdateCommand(dbCon,
                new object[,] { { "SettingValue", "http://www.fzitv.net" } },
                "Settings",
                new object[,] { { "SettingID", "=", 100 } },
                null
            ); //new 后即執(zhí)行,可用 bSuccess 與 Query 屬性分別獲得成功與否及相應(yīng)的 SQL
 
            //參數(shù)與 MySQLUpdateCommand 的后四個(gè)相同
            new MySQLDeleteCommand(dbCon, "Trash", null, null);

相關(guān)文章

  • 一道關(guān)于C#參數(shù)傳遞的面試題分析

    一道關(guān)于C#參數(shù)傳遞的面試題分析

    這篇文章主要介紹了一道關(guān)于C#參數(shù)傳遞的面試題,實(shí)例分析了C#參數(shù)傳遞的相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#實(shí)現(xiàn)Modbus通信功能的示例詳解

    C#實(shí)現(xiàn)Modbus通信功能的示例詳解

    Modbus作為一種開放且廣泛采用的通信協(xié)議,在實(shí)現(xiàn)設(shè)備間數(shù)據(jù)交換方面發(fā)揮著至關(guān)重要的作用,它不僅支持多種物理層接口(如RS-232,?RS-485,?以及以太網(wǎng)),還因其簡(jiǎn)單易用的特點(diǎn)而被大家所青睞,本文通過實(shí)際示例介紹如何在C#項(xiàng)目中輕松實(shí)現(xiàn)Modbus通信功能
    2024-11-11
  • c# 屏蔽快捷鍵的實(shí)現(xiàn)示例

    c# 屏蔽快捷鍵的實(shí)現(xiàn)示例

    這篇文章主要介紹了c# 屏蔽快捷鍵的實(shí)現(xiàn)示例,幫助大家更好的理解和利用c#進(jìn)行桌面開發(fā),感興趣的朋友可以了解下
    2021-03-03
  • C#進(jìn)行圖像處理的常見方法(Bitmap,BitmapData,IntPtr)使用詳解

    C#進(jìn)行圖像處理的常見方法(Bitmap,BitmapData,IntPtr)使用詳解

    這篇文章主要為大家詳細(xì)介紹了C#進(jìn)行圖像處理的幾個(gè)常見方法(Bitmap,BitmapData,IntPtr)具體使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01
  • .net 通過 WebAPI 調(diào)用nsfwjs 進(jìn)行視頻鑒別功能

    .net 通過 WebAPI 調(diào)用nsfwjs 進(jìn)行視頻鑒別功能

    這篇文章主要介紹了.net 通過 WebAPI 調(diào)用 nsfwjs 進(jìn)行視頻鑒別,文末給大家提到了FFMPEG獲取視頻關(guān)鍵幀并保存成jpg圖像的相關(guān)知識(shí),需要的朋友可以參考下
    2021-09-09
  • Windows 8 Metro用C#連接SQLite及創(chuàng)建數(shù)據(jù)庫(kù),數(shù)據(jù)表的增刪改查的實(shí)現(xiàn)

    Windows 8 Metro用C#連接SQLite及創(chuàng)建數(shù)據(jù)庫(kù),數(shù)據(jù)表的增刪改查的實(shí)現(xiàn)

    本篇文章小編為大家介紹,Windows 8 Metro用C#連接SQLite及創(chuàng)建數(shù)據(jù)庫(kù),數(shù)據(jù)表的增刪改查的實(shí)現(xiàn)。需要的朋友參考下
    2013-04-04
  • Unity3D利用DoTween實(shí)現(xiàn)卡牌翻轉(zhuǎn)效果

    Unity3D利用DoTween實(shí)現(xiàn)卡牌翻轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D利用DoTween實(shí)現(xiàn)卡牌翻轉(zhuǎn)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C# 中的委托與事件機(jī)制詳解

    C# 中的委托與事件機(jī)制詳解

    本文詳細(xì)介紹了C#中委托和事件的概念、使用方法和應(yīng)用場(chǎng)景,包括委托定義、匿名方法、Lambda表達(dá)式、事件機(jī)制和多播委托的詳細(xì)說明,委托作為類型安全的函數(shù)指針,文章還探討了如何通過匿名方法和Lambda表達(dá)式簡(jiǎn)化委托的使用,以及多播委托在事件處理中的應(yīng)用
    2024-10-10
  • C# 匿名方法基礎(chǔ)回顧

    C# 匿名方法基礎(chǔ)回顧

    本篇文章主要介紹了C#的匿名方法的參數(shù)使用范圍以及委托示例。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • 說說C#的async和await的具體用法

    說說C#的async和await的具體用法

    本篇文章主要介紹了說說C#的async和await的具體用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論

常宁市| 理塘县| 赤城县| 临沧市| 庆城县| 洞头县| 驻马店市| 昌图县| 凌海市| 郯城县| 营山县| 台前县| 吴堡县| 乌拉特前旗| 鱼台县| 北碚区| 宣威市| 元阳县| 舞钢市| 宿迁市| 文昌市| 调兵山市| 新乐市| 慈利县| 孟连| 公主岭市| 盐池县| 安宁市| 贡嘎县| 忻城县| 利辛县| 开封县| 勃利县| 麦盖提县| 宜宾县| 华蓥市| 庆城县| 罗江县| 宝丰县| 兴安盟| 台州市|