国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同德县| 岑溪市| 沅江市| 永济市| 德钦县| 会宁县| 钦州市| 会东县| 丰宁| 张家口市| 竹溪县| 连江县| 伊春市| 德化县| 来安县| 吉水县| 平远县| 宿州市| 西畴县| 成武县| 保亭| 图木舒克市| 娄烦县| 富锦市| 上林县| 明星| 汪清县| 虞城县| 长宁县| 黄大仙区| 承德市| 黑龙江省| 大名县| 正定县| 专栏| 嘉鱼县| 饶平县| 保定市| 汝阳县| 田林县| 阿克陶县|