亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#使用開源驅動連接操作MySQL數據庫

2020-01-24 02:08:48
字體:
來源:轉載
供稿:網友

前面一篇 //www.49028c.com/article/61219.htm 講了 C# 里用 MySQL 官方驅動怎么去連接操作 MySQL 驅動,就是 MySQL 的 JDBC 驅動有兩個一樣,針對 .NET 的 MySQL 驅動也有兩個。這里介紹的就是 .NET 連接 MySQL 的第二個驅動,來自于 Sourceforge 的開源驅動。

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

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

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

這次我會在一個例子中涉及到以上四個方面,下面這個片代碼有點混亂,使用時請讀懂來,然后才能各取所需:

復制代碼 代碼如下:

using System;
using System.IO;
 
using MySQLDriverCS; //引入的命名空間就這個
using System.Data.Common;
 
namespace cc.unmi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //MySQLDriverCS 有了 MySQLConnectionStringBuilder 和 MySQLConnectionString 來構造連接字符串
            //其實反而有點故弄玄虛,也許是以前直接用連接字符串習慣了
            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();
 
            //參數用 @, 同樣支持 ? 的方式, 應該也是不推薦用 ? 的形式
            //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");
 
            //其實是加在 MySQLParameterCollection 里的
            //看起來與 AddWithValue() 有異曲同功之妙,比如可寫成 com.Parameters.Add(new MySQLParameter("@id",1);
            com.Parameters.Add(paraId);
            com.Parameters.Add(paraName);
 
            //如果是查詢
            //MySQLDataReader dr = com.ExecuteReaderEx();//執行 ExecuteReaderEx() 返回的才是 MySQLDataReader
 
            DbTransaction trans = conn.BeginTransaction(); //開啟事物
 
            try
            {
                //com.ExecuteNonQuery();
                //還要執行更多的語句時應使用事物
                Console.WriteLine(com.ExecuteScalar().ToString());
                trans.Commit();
            }
            catch (MySQLException ex)
            {
                Console.WriteLine(ex.Message);
                trans.Rollback();
            }
            finally
            {
                conn.Close();
            }
 
            Console.ReadKey();
        }
    }
}

雖說那個驅動文件名中有 DotNet2.0 字樣,應該只要是 2.0 及以上的 .Net 運行時就行的,我是在 32 位的 XP 下,Visual Studio 2008 中,用 .Net 3.5 來跑的,沒有問題。

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

復制代碼 代碼如下:

{"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 位的應用,與官版的驅動表現不一樣。官版的 MSI 程序不能在我的 64 位系統下安裝,但安裝包中的 .dll 是可在 64 位下用。而這個版本的驅動是能安裝,但用起來告訴我不行,明擺著是甩我。其實在下載驅動的網頁上有注明用了 32 位的各種 Winows 操作系統云云。

最后簡單說下與官版的驅動的少許差異,連接字符串上沒有官版驅動豐富,且不知對連接池的支持如何。在用參數化查詢設置參數時,雖然比標簽的 ADO.Net 方便,便比起官版的可用 AddWithValue() 方法稍微遜色。再就是在 64 位下根本無法運行,這可不能不算是個致使傷,服務器下 64 位系統在所難免。

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

本不應該把這個驅動這么鮮明的幾個特性放后面的。大概看下這幾個函數的操作:

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产999精品久久久| 91麻豆国产精品| 欧美日韩美女在线观看| 国内自拍欧美激情| 亚洲国产精品高清久久久| 国产精品视频公开费视频| 亚洲精品国产成人| 亚洲美女av电影| 国产精品嫩草影院一区二区| 亚洲欧美在线免费观看| 播播国产欧美激情| 丰满岳妇乱一区二区三区| 最近2019中文字幕第三页视频| 欧美黑人性视频| 日韩av在线看| 久久全国免费视频| 97精品国产97久久久久久| 久久久久久久激情视频| 日本欧美黄网站| 亚洲美女在线看| 亚洲人午夜精品免费| 夜夜嗨av色综合久久久综合网| 成人中文字幕在线观看| 国产精品a久久久久久| 伊人一区二区三区久久精品| 1769国产精品| 欧美风情在线观看| 亚洲成av人乱码色午夜| 中文字幕亚洲欧美日韩高清| 国产亚洲精品va在线观看| 国产美女精品免费电影| 精品亚洲夜色av98在线观看| 欧美日韩视频免费播放| 日韩欧美亚洲国产一区| 亚洲最新中文字幕| 亚洲欧美国产日韩中文字幕| 欧美黑人极品猛少妇色xxxxx| 亚洲成年人影院在线| 欧美精品在线免费观看| 国产精品视频区| 91在线高清免费观看| 亚洲四色影视在线观看| 日韩黄色高清视频| 91免费看片在线| 成人黄色在线观看| 国产精品日韩在线| 亚洲精品在线不卡| 在线日韩中文字幕| 欧美性猛交xxxx乱大交3| 91av网站在线播放| 国产在线精品自拍| 亚洲图片制服诱惑| 国产精品高清在线| 亚洲一区亚洲二区亚洲三区| 国模私拍一区二区三区| 国产香蕉97碰碰久久人人| 成人网中文字幕| 亚洲激情视频网站| www.xxxx欧美| 自拍偷拍亚洲一区| 久久男人资源视频| 久久91亚洲精品中文字幕| 久久久国产精彩视频美女艺术照福利| 亚洲国产成人在线播放| 亚洲一区二区三区香蕉| 26uuu亚洲国产精品| 狠狠躁夜夜躁久久躁别揉| 国产精品爱久久久久久久| 成人情趣片在线观看免费| 欧美高清videos高潮hd| 成人黄色av播放免费| 久久大大胆人体| 亚洲专区在线视频| 日韩精品极品在线观看播放免费视频| 日韩高清中文字幕| 久久久精品国产一区二区| 国产91精品久| 亚洲免费视频一区二区| 色综合亚洲精品激情狠狠| 欧美最猛性xxxxx亚洲精品| www欧美xxxx| 欧美老少做受xxxx高潮| 韩剧1988在线观看免费完整版| 这里只有精品在线播放| 青青草99啪国产免费| 国产欧美亚洲视频| 欧美色播在线播放| 国产精品久久久久久av| 伊人久久五月天| 久久久在线视频| 国产精品永久免费| 亚洲第一精品自拍| 国产精品网红福利| 欧美黄色片免费观看| 8x海外华人永久免费日韩内陆视频| 亚洲精品国产精品国自产在线| 日韩在线免费av| 欧美精品免费在线| 久久久之久亚州精品露出| 亚洲成人激情小说| 亚洲一区亚洲二区亚洲三区| 在线a欧美视频| 欧美激情奇米色| 亚洲精品视频网上网址在线观看| 国产精品手机播放| 亚洲国产私拍精品国模在线观看| 日韩电影免费观看在线观看| 亚洲激情在线观看| 一区二区三区高清国产| 5566成人精品视频免费| 成人免费黄色网| 91av在线免费观看| 日韩精品中文在线观看| 亚洲国产中文字幕在线观看| 亚洲电影天堂av| 18久久久久久| 午夜精品国产精品大乳美女| 亚洲黄色有码视频| 国产美女久久久| 在线日韩av观看| 国产精品直播网红| 超碰日本道色综合久久综合| 色av中文字幕一区| 亚洲精品欧美一区二区三区| 久久av在线看| 91香蕉国产在线观看| 97在线日本国产| 日韩精品福利网站| 91社影院在线观看| 亚洲xxxxx| 国产一区二区三区视频免费| 精品久久久久久电影| 国产盗摄xxxx视频xxx69| 人人澡人人澡人人看欧美| 亚洲成av人片在线观看香蕉| 欧美裸体男粗大视频在线观看| 亚洲天天在线日亚洲洲精| 麻豆成人在线看| 热久久美女精品天天吊色| 亚洲一区二区三区四区视频| 亚洲一区中文字幕| 欧洲美女7788成人免费视频| 久久久久久久网站| 久久韩国免费视频| 欧美激情一二三| 2019亚洲男人天堂| 久久99热精品这里久久精品| 国产丝袜视频一区| 亚洲视屏在线播放| 久久国产精品免费视频| 亚洲日本中文字幕免费在线不卡| 国产成人小视频在线观看| 北条麻妃一区二区三区中文字幕| 国产精品视频在线观看| 成人妇女淫片aaaa视频| 97香蕉超级碰碰久久免费软件| 久久精品一偷一偷国产| 亚洲老司机av| 久久精视频免费在线久久完整在线看| 欧美有码在线观看视频| 亚洲成人性视频| 亚洲另类欧美自拍| 国产精品久久久久77777| 日韩av在线网|