Busan IT/제어 UI(C#)2015. 6. 25. 13:16

================================ Outline ====================================

DataTableMySQL 연동

----------------------------------------------------------------------------





 

FTP에 올라와 있는 DataTableExam의 코드를 보고 직접 테이블을 작성해 보자.


DataTableExam.zip


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _20150625
{
    public partial class Form1 : Form
    {
        private DataTable tbl = null;       //데이터 테이블을 멤버 변수 tbl로 선언


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }


        private void btn_DataTable_Click(object sender, EventArgs e)
        {
            tbl = new DataTable("classinfo");   //classInfo 테이블 생성
            DataColumn column;                  //컬럼 인스턴스 생성

            //학번 컬럼 만들기
            column = new DataColumn();
            column.DataType = Type.GetType("System.String");    //데이터형 지정
            column.ColumnName = "Name";     //칼럼 이름 설정
            column.AllowDBNull = false;     //널 값 허용 안함
            tbl.Columns.Add(column);        //테이블에 칼럼 추가

            //국어 컬럼 만들기
            column = new DataColumn();
            column.DataType = Type.GetType("System.Int32");     //데이터형
            column.ColumnName = "Kor";      //컬럼 이름
            column.AllowDBNull = false;     //널 값 허용 안함
            tbl.Columns.Add(column);        //테이블에 컬럼 추가

            //영어 컬럼 만들기
            column = new DataColumn();
            column.DataType = Type.GetType("System.Int32");     //데이터형
            column.ColumnName = "Eng";      //컬럼 이름
            column.AllowDBNull = false;     //널 값 허용 안함
            tbl.Columns.Add(column);        //테이블에 컬럼 추가

            //수학 컬럼 만들기
            column = new DataColumn();
            column.DataType = Type.GetType("System.Int32");     //데이터형
            column.ColumnName = "Math";     //컬럼 이름
            column.AllowDBNull = false;     //널 값 허용 안함
            tbl.Columns.Add(column);        //테이블에 컬럼 추가

            // 평균 컬럼 만들기
            column = new DataColumn();
            column.DataType = Type.GetType("System.Double");    // 데이터형
            column.ColumnName = "Avg";      //컬럼 이름
            column.AllowDBNull = false;     //널 값 허용 안함
            tbl.Columns.Add(column);        //테이블에 컬럼 추가

            //학번 컬럼을 기본 키로 설정
            DataColumn[] pk = new DataColumn[1];
            pk[0= tbl.Columns["No"];
            tbl.PrimaryKey = pk;

            //새로운 레코드 추가하기
            DataRow row;
            row = tbl.NewRow();     //200501 번 데이터
            row["Name"= "홍길동";
            row["Kor"= 90;
            row["Eng"= 80;
            row["Math"= 95;
            row["Avg"= (90 + 80 + 95) / 3.0;
            tbl.Rows.Add(row);

            row = tbl.NewRow();  // 200502 번 데이터
            row["Name"= "김동현";
            row["Kor"= 95;
            row["Eng"= 81;
            row["Math"= 90;
            row["Avg"= (95 + 81 + 90) / 3.0;
            tbl.Rows.Add(row);

            row = tbl.NewRow();  // 200503 번 데이터
            row["Name"= "오종석";
            row["Kor"= 80;
            row["Eng"= 90;
            row["Math"= 75;
            row["Avg"= (80 + 90 + 75) / 3.0;
            tbl.Rows.Add(row);

            data_Grid.DataSource = tbl;     //데이터 그리드 화면 출력
            
        }

        private void btn_Add_Click(object sender, EventArgs e)
        {
            string name = txt_Name.Text.Trim();
            string kor = txt_Kor.Text.Trim();
            string eng = txt_Eng.Text.Trim();
            string math = txt_Math.Text.Trim();

            if(name != "" && kor != "" && eng != "" && math != "")
            {
                try 
                {
                    int kk = Convert.ToInt32(kor);
                    int ee = Convert.ToInt32(eng);
                    int mm = Convert.ToInt32(math);

                    DataRow row = tbl.NewRow();
                    row["Name"= name;
                    row["Kor"= kk;
                    row["Eng"= ee;
                    row["Math"= mm;
                    row["Avg"= (kk + ee + mm) / 3;
                    tbl.Rows.Add(row);
                }
                catch
                {
                    MessageBox.Show("국/영/수 성적이 잘못 입력되었습니다!");
                }
            }
            else
          {
                MessageBox.Show("이름, 국/영/수 성적을 입력하세요!");

          }
        }

        private void data_Grid_Click(object sender, System.EventArgs e)
        {
            try
            {
                int index = this.data_Grid.CurrentRowIndex;
                DataRow row = this.tbl.Rows[index];
                this.txt_Name.Text = row["Name"].ToString();
                this.txt_Kor.Text = row["Kor"].ToString();
                this.txt_Eng.Text = row["Eng"].ToString();
                this.txt_Math.Text = row["Math"].ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show("에러 발생 : " + ex.Message);
            }

        }

        private void btn_Edit_Click(object sender, EventArgs e)
        {
            try
            {
                int index = this.data_Grid.CurrentRowIndex;

                int kor = Convert.ToInt32(this.txt_Kor.Text.Trim());
                int eng = Convert.ToInt32(this.txt_Eng.Text.Trim());
                int math = Convert.ToInt32(this.txt_Math.Text.Trim());

                DataRow row = this.tbl.Rows[index];
                row.BeginEdit();
                row["Name"= this.txt_Name.Text.Trim();
                row["Kor"= kor;
                row["Eng"= eng;
                row["Math"= math;
                row["Avg"= (kor + eng + math) / 3.0;
                row.EndEdit();
            }
            catch
            {
                MessageBox.Show("데이터그리드에서 편집할 레코드를 선택하세요!");
            }

        }

        private void btn_Delete_Click(object sender, EventArgs e)
        {
            try
            {
                int index = this.data_Grid.CurrentRowIndex;

                DataRow row = this.tbl.Rows[index];
                row.Delete();
            }
            catch (Exception ex)
            {
                MessageBox.Show("에러 발생 : " + ex.Message);
            }

        }

        private void btn_Delete_All_Click(object sender, EventArgs e)
        {
            try
            {
                tbl.Rows.Clear();   // 전체 레코드 삭제
            }
            catch (Exception ex)
            {
                MessageBox.Show("에러 메시지 : " + ex.Message);
            }
        }

        
    }
}

 












using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;


namespace pilot
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'kdhong_dbDataSet.mem' table. You can move, or remove it, as needed.
            
            MySqlConnection conn = null;
            MySqlDataAdapter adapter = null;
            DataSet ds = null;
            DataTable table = null;
            string strCon = "Data Source =localhost;Database=mem ;User Id=root;Password=root";


            conn = new MySqlConnection(strCon);

            adapter = new MySqlDataAdapter("select * from mem", conn);

            ds = new DataSet();

            adapter.Fill(ds);

            table = ds.Tables[0];    //mem 테이블을 추출
            
            dataGridView1.DataSource = table;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.memTableAdapter.Fill(this.kdhong_dbDataSet.mem);

        }
    }
}

 

반응형
Posted by newind2000