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行読んでは貼り付けで読むことができました。