C#の.net MySQL接続
C#でMySQLに接続します。今回は .net frameworkではなく新しい .netの方です。なのでDataSetは使いません。
MySQLはxamppを流用
今回はMySQLはphpの授業で使ったxamppに入っていたのでこれを流用します。xamppのインストール等はいっぱい紹介されてますし、簡単なので省略します。
データベースといてmydbを作成し、テーブルとしてbtempを入れます。
データベース設計
データベースは前回SQL Serverで作ったものと同じにします。プライマリーキーにIDが自動採番で作成されるようにして、後は日付と体温を入れます
項目名 | 型 | フィールド型 |
---|---|---|
id | 数値 | AutoField |
edate | 計測した日付 | DateField |
btemp | body temp体温 | FloatField |
c#のプロジェクトを作ります
新規にC#のプロジェクト作成
Visual Studioを立ち上げて、新しいプロジェクトを作成していきます。
新規プロジェクトを作成します。
.NETのformアプリケーションを選択します。似たものがいっぱいあるので間違わないようにしてください。.net frameworkではない方です。
プロジェクトの名前を設定します。csCoreMySQLtest1としました。
ではFormを作っていきましょう。FormにはListViewとボタンを貼り付けます
さて、MySQLに接続するにはライブラリーを追加しないといけません。
Visual Studioでは、必要なイブラリーはNuGetから取得するようになっています。
最初取得済みのリストがでるので参照に切り替えて「MySql」を検索して、最初に出てくるMySQL.Dataを選択
プロジェクトにチェックを入れて「インストール」します
これでMySQLへの接続が使えるようになるので、コーディングしていきます
using MySql.Data.MySqlClient; namespace CsCoreMySQLTest1 { public partial class Form1 : Form { public String sql = "Select * from btemp"; public String ConnectionString = "Server=127.0.0.1;" + "Port=3306;" + "Database=mydb;" + "User ID=root;" + "Password=12345;"; public Form1() { InitializeComponent(); } private void btnDir_Click(object sender, EventArgs e) { listView1.Items.Clear(); listView1.View = View.Details; listView1.Columns.Add("id"); listView1.Columns.Add("temp"); listView1.Columns.Add("date"); listView1.Columns[0].Width = 100; listView1.Columns[1].Width = 200; listView1.Columns[2].Width = 300; try { using( MySqlConnection conn = new MySqlConnection(ConnectionString)) { conn.Open(); using( MySqlCommand cmd = new MySqlCommand(sql, conn)) { using( MySqlDataReader reader = cmd.ExecuteReader()) { while(reader.Read()) { ListViewItem item = new ListViewItem(); item.Text = reader.GetDecimal(0).ToString(); item.SubItems.Add(reader.GetFloat(1).ToString()); item.SubItems.Add(reader.GetDateTime(2).Date.ToString("yyyy/MM/dd")); listView1.Items.Add(item); } } } } } catch(Exception ex) { MessageBox.Show(ex.Message); } } } }
MySQLは3306ポートへの接続です。今回はListViewでやりましたので、各列の設定をして、reader.Read()で1行読んでは貼り付けで読むことができました。