このWordPressブログなんだけど、フロント側だけ.net coreで実装したい。なので、MySqlにアクセスしてデータ取ってくるところまでを書く。EFではなく生SQL使いたいのでそんな人が入れば。
NugetでMySql.Data 8.0.18を追加。Oracleさん公式なので安心。ほんとかよ。
ex) https://dev.mysql.com/doc/dev/connector-net/6.10/html/N_MySql_Data_MySqlClient.htm
こんなテーブルを全件取得。
MariaDB [benchmark]> select * from member;
+-----------+-------------+--------------------+------------+---------------------+---------------------+
| member_id | member_name | email | birthday | created_at | updated_at |
+-----------+-------------+--------------------+------------+---------------------+---------------------+
| 1 | 雨宮天 | hoge@dobusarai.net | 1993-08-28 | 2019-09-30 15:16:52 | 2019-09-30 15:19:39 |
| 2 | 麻倉もも | fuga@dobusarai.net | 1994-06-25 | 2019-09-30 15:16:52 | 2019-09-30 15:16:52 |
| 3 | 夏川椎菜 | piyo@dobusarai.net | 1996-07-18 | 2019-09-30 15:16:52 | 2019-09-30 15:16:52 |
+-----------+-------------+--------------------+------------+---------------------+---------------------+
3 rows in set (0.36 sec)
using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace CliTool {
class Program {
static void Main(string[] args) {
var cString = "Host=localhost;Database=benchmark;CharSet=utf8mb4;User Id=root;Password=";
var query = "select * from member";
var datatable = new DataTable();
using(var con = new MySqlConnection(cString)) {
using var adapter = new MySqlDataAdapter {
SelectCommand = new MySqlCommand(query, con)
};
adapter.Fill(datatable);
}
foreach(var column in datatable.Columns) {
Console.Write(column.ToString() + " ");
}
Console.WriteLine(string.Empty);
foreach(var row in datatable.Select()) {
Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", row[0], row[1], row[2], row[3], row[4], row[5]));
}
/* end */
Console.WriteLine("Press Any key to continue...");
Console.ReadKey(true);
}
}
}
member_id member_name email birthday created_at updated_at
1 雨宮天 hoge@dobusarai.net 1993/08/28 0:00:00 2019/09/30 15:16:52 2019/09/30 15:19:39
2 麻倉もも fuga@dobusarai.net 1994/06/25 0:00:00 2019/09/30 15:16:52 2019/09/30 15:16:52
3 夏川椎菜 piyo@dobusarai.net 1996/07/18 0:00:00 2019/09/30 15:16:52 2019/09/30 15:16:52
Press Any key to continue...
PHPに慣れちゃったせいでDataTable使いづらく感じるが、sqlに頼らずにクエリ使えるので慣れれば便利なはず。というかサンプル探しててもDataRowをforeachで回さずにindex指定してるのが多くてなんでや?とデバッグしつつ色々触ってみたのだが、enumerableじゃないんだね。