보라코딩

Day 18, C# (DB 연동_MySQL) 본문

개발자가 되었다?

Day 18, C# (DB 연동_MySQL)

new 보라 2023. 9. 8. 19:14

 

결과물

 

 

 

 

 


 

 

1. 참조연결

- 참조 오른쪽 마우스 👉 Nuget 패키지 관리 👉 mysql 설치

 

 

 

 

 

 

2. XAML 구성

- Button과 DataGrid를 사용하여 간단하게 구성

 

<Window x:Class="DB연동.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DB연동"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Content="MySQL연결" 
                HorizontalAlignment="Left" Margin="152,236,0,0" VerticalAlignment="Top" Height="40" Width="96" 
                Click="Button_Click" RenderTransformOrigin="0.476,3.205"/>
        <DataGrid Name="userDataGrid" AutoGenerateColumns="True"  Height="200" Width="400"
                  VerticalAlignment="Top" HorizontalAlignment="Left"/>

    </Grid>
</Window>

 

 

 

 

3. MYSQL

 

- wpf 데이터베이스 만들기

- users 테이블 만들어서 데이터 2개만 넣기

 

Create database wpf;
use wpf;

CREATE TABLE users (
    id int auto_increment primary key,
    name varchar(50) not null,
    password varchar(255) not null
);

-- drop table users;

insert into users(name, password)
values
('mirero','1q2w3e4r'),
('system','1234');

select * from users;

 

 

 

 

 

4. C# 코드 작성

- using MySql.Data.MySqlClient; 입력하기!

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MySql.Data.MySqlClient;

namespace DB연동
{
    /// <summary>
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // MySQL 연결 문자열 설정
                string myConnection = "Server=localhost;Database=wpf;Port=3306;User=root;Password=비밀번호!!!!";

                // MySqlConnection 클래스를 사용하여 연결 생성
                MySqlConnection connection = new MySqlConnection(myConnection);

                // MySqlDataAdapter를 사용하여 데이터를 가져올 쿼리 설정
                MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
                myDataAdapter.SelectCommand = new MySqlCommand("select * from users;", connection);

                // MySqlCommandBuilder를 사용하여 데이터 업데이트 작업을 자동으로 생성
                MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter);

                // 데이터베이스 연결 열기
                connection.Open();

                // 데이터를 저장할 DataSet 생성
                DataSet ds = new DataSet();

                // 데이터베이스에서 데이터를 가져와 ds에 채움
                myDataAdapter.Fill(ds, "users");

                // DataGrid에 데이터 표시
                userDataGrid.ItemsSource = ds.Tables["users"].DefaultView;

                MessageBox.Show("데이터 가져오기 완료!");

                // 데이터베이스 연결 닫기
                connection.Close();
            }
            catch (Exception ex) 
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

 

* DataSet 
- 메모리 내에 데이터를 저장하고 관리
- 주로 데이터베이스에서 가져온 데이터를 일시적으로 저장

 

 

'개발자가 되었다?' 카테고리의 다른 글

Day 20, C#  (0) 2023.09.12
Day 19, C# _ Unit Test  (0) 2023.09.11
Day 17, C# (WPF로 카카오 API 연동)  (0) 2023.09.07
Day 16, C#  (0) 2023.09.07
Day 15, C#  (0) 2023.09.05