[๋ฐ์ดํฐ๋ฒ ์ด์ค] .Net C#์์ MySQL ์ฌ์ฉํ๊ธฐ (์์ ํ์ผ ๋ค์ด๋ก๋)
์๊ฐ
์ง๋ ํฌ์คํ ์์๋ ์๋์ฐ10์์ MySQL์ ์ฌ์ฉํ๊ธฐ ์ํ ํ๊ฒฝ ๊ตฌ์ฑ์ ์๊ฐํ์์ต๋๋ค.
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์๋์ฐ10์ MySQL ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์๋์ฐ10์ MySQL ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ MySQL MySQL์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS; Relational Database Management System)์ ๋๋ค. MySQL์ ๋ฌด๋ฃ ๋ฒ์ ์ธ ์ปค๋ฎค๋ํฐ ์๋์ (Community Edition)..
luckygg.tistory.com
์ด๋ฒ ํฌ์คํ ์์๋ ์ฝ๋ ๋ ๋ฒจ์์ ์ด๋ป๊ฒ MySQL์ ์ ๊ทผํ์ฌ DB์ ์ ๊ทผํ๋์ง ์๊ฐํ๊ฒ ์ต๋๋ค.
์์ ํ๋ก์ ํธ ๋ชฉํ
๋ณธ๋ฌธ์ ์์ ํ๋ก์ ํธ๋ ๊ฐ๋จํ๊ฒ MySQL์ ์ฌ์ฉํ์ฌ ์ ํ๋ฒํธ๋ถ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ๋์์ ์๋์ ๊ฐ์ต๋๋ค.

์์ ํ๋ก์ ํธ๋ DB์ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ ์ฝ์
(INSERT)
, ์์ (UPDATE)
, ์ญ์ (DELETE)
, ์กฐํ(SELECT)
๋์์ ๋ณด์ฌ์ค๋๋ค. ์ฐธ๊ณ ๋ก ๋ณธ๋ฌธ์ ์์ ์ฝ๋์ ์ฌ์ฉ๋ DB๋ ์๋์ ๊ฐ์ด ์์ฑํ์ต๋๋ค.

accounts_table
์ด๋ฆ์ผ๋ก ํ
์ด๋ธ์ ์์ฑํ๊ณ , Column์ผ๋ก id(INT)
์ name(VARCHAR)
๊ทธ๋ฆฌ๊ณ phone(VARCHAR)
์ ์์ฑํ์ต๋๋ค. name์๋ ์ด๋ฆ์ด, phone์๋ ์ ํ๋ฒํธ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋ฉ๋๋ค.
.Net C#์์ MySQL์ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น
ExamMySQL
์ด๋ผ๋ ์ด๋ฆ์ผ๋ก C# WinForm ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , ๋๊ฒ(NuGet)์์ MySql.Data
ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.

๊ทธ๋ฆฌ๊ณ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ MySQL ์ฌ์ฉ์ ์ํ ์ค๋น๋ฅผ ๋ง์นฉ๋๋ค.
//... //MySQL namespace๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ ์ธ. using MySql.Data.MySqlClient; namespace ExamMySQL { public partial class Form1 : Form { string _server = "localhost"; //DB ์๋ฒ ์ฃผ์, ๋ก์ปฌ์ผ ๊ฒฝ์ฐ localhost int _port = 3308; //DB ์๋ฒ ํฌํธ string _database = "new_schema"; //DB ์ด๋ฆ string _id = "root"; //๊ณ์ ์์ด๋ string _pw = "root"; //๊ณ์ ๋น๋ฐ๋ฒํธ string _connectionAddress = ""; public Form1() { InitializeComponent(); //MySQL ์ฐ๊ฒฐ์ ์ํ ์ฃผ์ ํ์ _connectionAddress = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4}", _server, _port, _database, _id, _pw); } //... } }
WinForm UI ๊ตฌ์ฑ
์ด๋ฆ(name)
๊ณผ ๋ฒํธ(phone)
๋ฐ์ดํฐ๋ฅผ ์ฝ์
, ์์ , ์ญ์ , ์กฐํํ๋ ๊ฒ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ๋จ์ํ๊ฒ UI๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.

MySQL ๋ฐ์ดํฐ ์ฝ์ (INSERT)
ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์ ์ ์ํ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
INSERT INTO ํ
์ด๋ธ์ด๋ฆ [column1, column2, ...] VALUES (value1, value2, ...);
๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋์ ๋ฐ์ดํฐ ์ฝ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
private void buttonInsert_Click(object sender, EventArgs e) { try { using (MySqlConnection mysql = new MySqlConnection(_connectionAddress)) { mysql.Open(); //accounts_table์ name, phone column ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํฉ๋๋ค. id๋ ์๋์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. string insertQuery = string.Format("INSERT INTO accounts_table (name, phone) VALUES ('{0}', '{1}');", textBoxName.Text, textBoxPhone.Text); MySqlCommand command = new MySqlCommand(insertQuery, mysql); if (command.ExecuteNonQuery() != 1) MessageBox.Show("Failed to insert data."); textBoxName.Text = ""; textBoxPhone.Text = ""; selectTable(); } } catch (Exception exc) { MessageBox.Show(exc.Message); } }
MySQL ๋ฐ์ดํฐ ์์ (UPDATE)
ํ ์ด๋ธ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ํ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
UPDATE ํ
์ด๋ธ์ด๋ฆ SET column1 = value1 [, column2 = value2 ...] [WHERE ์กฐ๊ฑด];
๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ฝ๋๋ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
private void buttonUpdate_Click(object sender, EventArgs e) { try { using (MySqlConnection mysql = new MySqlConnection(_connectionAddress)) { mysql.Open(); int pos = listViewPhoneBook.SelectedItems[0].Index; int index = Convert.ToInt32(listViewPhoneBook.Items[pos].Text); //accounts_table์ ํน์ id์ name column๊ณผ phone column ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค. string updateQuery = string.Format("UPDATE accounts_table SET name = '{1}', phone = '{2}' WHERE id={0};", index, textBoxName.Text, textBoxPhone.Text); MySqlCommand command = new MySqlCommand(updateQuery, mysql); if (command.ExecuteNonQuery() != 1) MessageBox.Show("Failed to delete data."); textBoxName.Text = ""; textBoxPhone.Text = ""; selectTable(); } } catch (Exception exc) { MessageBox.Show(exc.Message); } }
MySQL ๋ฐ์ดํฐ ์ญ์ (DELETE)
ํ ์ด๋ธ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ธฐ ์ํ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
DELETE FROM ํ
์ด๋ธ์ด๋ฆ [WHERE ์กฐ๊ฑด];
์์ ์ฝ๋๋ ๋ณด๊ฒ ์ต๋๋ค.
private void buttonDelete_Click(object sender, EventArgs e) { try { using (MySqlConnection mysql = new MySqlConnection(_connectionAddress)) { mysql.Open(); int pos = listViewPhoneBook.SelectedItems[0].Index; int index = Convert.ToInt32(listViewPhoneBook.Items[pos].Text); //accounts_table์์ ํน์ id์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค. string deleteQuery = string.Format("DELETE FROM accounts_table WHERE id={0};", index); MySqlCommand command = new MySqlCommand(deleteQuery, mysql); if (command.ExecuteNonQuery() != 1) MessageBox.Show("Failed to delete data."); textBoxName.Text = ""; textBoxPhone.Text = ""; selectTable(); } } catch (Exception exc) { MessageBox.Show(exc.Message); } }
MySQL ๋ฐ์ดํฐ ์กฐํ(SELECT)
ํ ์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SELECT * FROM ํ
์ด๋ธ์ด๋ฆ;
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
private void selectTable() { try { using (MySqlConnection mysql = new MySqlConnection(_connectionAddress)) { mysql.Open(); //accounts_table์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค. string selectQuery = string.Format("SELECT * FROM accounts_table"); MySqlCommand command = new MySqlCommand(selectQuery, mysql); MySqlDataReader table = command.ExecuteReader(); listViewPhoneBook.Items.Clear(); while (table.Read()) { ListViewItem item = new ListViewItem(); item.Text = table["id"].ToString(); item.SubItems.Add(table["name"].ToString()); item.SubItems.Add(table["phone"].ToString()); listViewPhoneBook.Items.Add(item); } table.Close(); } } catch (Exception exc) { MessageBox.Show(exc.Message); } }
์ ๋ฆฌ
์์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋ฐ๋ผ ํ์ จ๋์? DB ์ฐ๊ฒฐ๋ง ์ ๋๋ก ํ๋ค๋ฉด ์ด๋ ค์ด ๋ถ๋ถ์ ์์ด ๋ณด์ ๋๋ค. ๋ณธ๋ฌธ์ ์์ ๋ ๋ก์ปฌ ์๋ฒ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์๋๋ฐ, ์๊ฒฉ ์๋ฒ์ DB๋ ์ฃผ์๋ง ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฅํ๋ฉด ๋ฌธ์ ์์ด ๋ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค. ๋ณธ๋ฌธ์ ์์ ์ฝ๋๋ ์๋ ํ์ผ์ ๋ค์ด๋ก๋ํ๋ฉด ๋๊ฒ ์ต๋๋ค.
'Programming > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์๋์ฐ10์ MySQL ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ (0) | 2021.05.09 |
---|
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์๋์ฐ10์ MySQL ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์๋์ฐ10์ MySQL ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ํ๊ธฐ
2021.05.09
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.