創(chuàng)建ASP.NET Core MVC應(yīng)用程序(2)-利用MySQL Connector NET連接到MySQL

創(chuàng)建ASP.NET Core MVC應(yīng)用程序(2)-利用MySQL Connector NET連接到MySQL

用慣.NET的研發(fā)人員都習(xí)慣性地使用SQLServer作為數(shù)據(jù)庫(kù)。然而.NET Core都玩開(kāi)源了,那么本文我就采用MySQL數(shù)據(jù)庫(kù)。

安裝MySQL

首先從官網(wǎng)下載MySQL安裝包。在Mac下會(huì)安裝到/usr/local/mysql/bin/mysql文件目錄下。

Mac下安裝完成之后可以在系統(tǒng)偏好設(shè)置查看到MySQL:


然后將MySQL路徑加入到環(huán)境變量之中:

  • 打開(kāi)終端,輸入如下命令,進(jìn)入到~文件夾:
cd ~
  • 輸入?如下命令,以創(chuàng)建一個(gè)文件:
touch .bash_profile

touch命令有兩個(gè)功能:

  • 用于把已存在文件的時(shí)間標(biāo)簽更新為系統(tǒng)當(dāng)前的時(shí)間(默認(rèn)方式),它們的數(shù)據(jù)將原封不動(dòng)地保留下來(lái)。
  • 二是用來(lái)創(chuàng)建新的空文件。
  • 輸入?如下命令,以打開(kāi)該文件:
open -e .bash_profile

open命令是Mac OS專(zhuān)用的命令行,用于打開(kāi)文件、目錄或執(zhí)行程序。就等同于在命令行模式下,重復(fù)圖形界面“雙擊”的動(dòng)作。
可以使用-a選項(xiàng)要求自行選擇打開(kāi)的程序,或使用-e強(qiáng)制在TextEdit中編輯此文件。

在TextEdit中打開(kāi)該文件,如果沒(méi)有配置過(guò)環(huán)境變量,則會(huì)是一個(gè)空白文檔。在里面輸入:“export PATH=${PATH}:/usr/local/mysql/bin”即可。

配置連接字符串

打開(kāi)appsettings.json,添加MySQL的連接字符串信息,此處使用MySQL的示例數(shù)據(jù)庫(kù)sakila。類(lèi)似于SQLServer的示例數(shù)據(jù)庫(kù)AdventureWorksNorthwind

{
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
            "Default": "Debug",
            "System": "Information",
            "Microsoft": "Information"
        }
    },
    "ConnectionStrings": {
        "MyConnection": "server=localhost;userid=root;pwd=(<你的密碼>);port=3306;database=sakila;sslmode=none;"
    }
}

添加MySQL相關(guān)依賴(lài)項(xiàng)

首先在project.json文件中添加EntityFrameworkCore依賴(lài)項(xiàng),添加MySQL Connector for .NET Core引用;并在buildOptionssection里面指定將appsettings.json復(fù)制到output里面。



最終的文件結(jié)果類(lèi)似于這樣:

{
    "dependencies": {
        "Microsoft.NETCore.App": {
            "version": "1.0.1",
            "type": "platform"
        },
        "Microsoft.AspNetCore.Diagnostics": "1.0.0",
        "Microsoft.AspNetCore.Mvc": "1.0.1",
        "Microsoft.AspNetCore.Razor.Tools": {
            "version": "1.0.0-preview2-final",
            "type": "build"
        },
        "Microsoft.AspNetCore.Routing": "1.0.1",
        "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
        "Microsoft.AspNetCore.StaticFiles": "1.0.0",
        "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
        "Microsoft.Extensions.Configuration.Json": "1.0.0",
        "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
        "Microsoft.Extensions.Logging": "1.0.0",
        "Microsoft.Extensions.Logging.Console": "1.0.0",
        "Microsoft.Extensions.Logging.Debug": "1.0.0",
        "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
        "MySql.Data.Core": "7.0.4-ir-191",
        "MySql.Data.EntityFrameworkCore": "7.0.4-ir-191"
    },

    "tools": {
        "BundlerMinifier.Core": "2.0.238",
        "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
        "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
    },

    "frameworks": {
        "netcoreapp1.0": {
            "imports": [
                "dotnet5.6",
                "portable-net45+win8"
            ]
        }
    },

    "buildOptions": {
        "emitEntryPoint": true,
        "preserveCompilationContext": true,
        "copyToOutput": {
            "include": "appsettings.json"
        }
    },

    "runtimeOptions": {
        "configProperties": {
            "System.GC.Server": true
        }
    },

    "publishOptions": {
        "include": [
            "wwwroot",
            "**/*.cshtml",
            "appsettings.json",
            "web.config"
        ]
    },

    "scripts": {
        "precompile": ["dotnet bundle"],
        "prepublish": ["bower install"],
        "postpublish": ["dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"]
    },

    "tooling": {
        "defaultNamespace": "MyFirstApp"
    }
}

最后運(yùn)行dotnet restore命令,該命令將會(huì)下載所有需要的依賴(lài)項(xiàng)。

添加MySQL示例數(shù)據(jù)庫(kù)Sakila

這里我們將使用MySQL示例數(shù)據(jù)庫(kù)sakila作為演示。

  • 將下載的壓縮包解壓到臨時(shí)路徑,通過(guò)mysql命令行連接到MySQL Server:
mysql -u root -p
  • 通過(guò)如下命令執(zhí)行sakila-schema.sql來(lái)創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu):
SOURCE /Users/CharlieChu/Desktop/sakila-db/sakila-schema.sql;
  • 通過(guò)如下命令執(zhí)行sakila-data.sql來(lái)填充上個(gè)命令創(chuàng)建的數(shù)據(jù)庫(kù)結(jié)構(gòu):
SOURCE /Users/CharlieChu/Desktop/sakila-db/sakila-data.sql;
  • 利用如下命令確認(rèn)已經(jīng)安裝成功:
USE sakila;
SHOW TABLES;

如下是執(zhí)行的具體效果:




獲取MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)

從Sakila數(shù)據(jù)庫(kù)Category表獲取信息:

public static void Main(string[] args)
{
    var builder = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

    var configuration = builder.Build();

    string connectionString = configuration.GetConnectionString("MyConnection");

    MySqlConnection connection = new MySqlConnection
    {
        ConnectionString = connectionString
    };
    connection.Open();
    MySqlCommand command = new MySqlCommand("SELECT * FROM sakila.customer;", connection);

    using (MySqlDataReader reader = command.ExecuteReader())
    {
        System.Console.WriteLine("Customer Id\t\tFirst Name\t\tLast Name\t\tEmail");
        while (reader.Read())
        {
            string row = $"{reader["customer_id"]}\t\t{reader["first_name"]}\t\t{reader["last_name"]}\t\t{reader["email"]}";
            System.Console.WriteLine(row);
        }
    }

    connection.Close();

    System.Console.ReadKey();
}

運(yùn)行dotnet run即可查看具體的數(shù)據(jù)。

參考文檔

個(gè)人博客

我的個(gè)人博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,697評(píng)論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,098評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,855評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,254評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,473評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,833評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,016評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,273評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,680評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,946評(píng)論 1 288
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,730評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,006評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容