본문 바로가기
Programming/C#

MYSQL C#연동 2

by ahhang0k 2021. 5. 28.

INSERT문으로 넣기

문자열은 양옆에 '"++"' 이런식으로 넣어주어야한다.

그리고 아이피는 앞의 블로그글 MYSQL C#연동 1에서 구한 IP,Database를 넣어준다.

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;
using MySql.Data.MySqlClient;

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

        MySqlConnection conn;
        MySqlCommand cmd; //sql구문을 실행시켜주는 객체

        private void button2_Click(object sender, EventArgs e) //연결버튼
        {
            //교량 구축하기 + 트럭준비
            String connStr = "Server=192.168.100.56;Port=3306;Uid=testuser;Pwd=1234;Database=test01;CHARSET=UTF8";
            conn = new MySqlConnection(connStr);
            conn.Open();
            cmd = new MySqlCommand("", conn);
            MessageBox.Show("연결성공");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            conn.Close();
            MessageBox.Show("연결해제");
        }

        private void button1_Click(object sender, EventArgs e) //추가버튼
        {
            string name;
            int age;
            string addr;
            name = tb_name.Text.ToString();
            age = int.Parse(tb_age.Text.ToString());
            addr = tb_addr.Text.ToString();
            //쿼리문을 준비
            String sql ="INSERT INTO userTbl(name,age,addr)VALUES('";sql += name + "'," + age + ",'" + addr + "');";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery(); //insert, update등 실행갯수 반환

            MessageBox.Show("입력 성공~");
        }
    }
}

 

SqlCommend 클래스

sql을 실행하기 위해 사용되는 클래스

 

ExcutenonQuery  쿼리문을 실행만 하고 적용만 할 때, insert, update, delete 등의 DML 실행시 사용

cmd.CommandTeext = "INSERT Table1 VALUES(1,N"광화문')";

cmd.ExecuteNonQuery();

 

ExecuteScalar : 메서드는 리턴되는 데이터가 하나 single value 인 경우, (count,sum,avg,max,min집계함수)

cmd.CommandText = "SELECT COUNT(*) FROM Table1";

object scalarValue = cmd.ExecuteScalar(); //변수로 object로 받고

count = (int)scalarValue; // 자료형을 바꾸어서 사용

 

cmd.ExecuteReader() : 여러줄 가져올 떄, select에서 사용

string sql = "SELECT * FROM Finance";

SqlCommand cmd = new SqlCommand(sql,conn);

SqlDataReader rdr = cmd.ExecuteReader();

 

1) 예제에 cmd.ExecuteReader()를 사용해보기

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;
using MySql.Data.MySqlClient;

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

        MySqlConnection conn;
        MySqlCommand cmd; //sql구문을 실행시켜주는 객체

        private void button2_Click(object sender, EventArgs e) //연결버튼
        {
            //교량 구축하기 + 트럭준비
            String connStr = "Server=192.168.100.56;Port=3306;Uid=testuser;Pwd=1234;Database=test01;CHARSET=UTF8";
            conn = new MySqlConnection(connStr);
            conn.Open();
            cmd = new MySqlCommand("", conn);
            MessageBox.Show("연결성공");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            conn.Close();
            MessageBox.Show("연결해제");
        }

        private void button1_Click(object sender, EventArgs e) //추가버튼
        {
            string name;
            int age; //정수타입만 입력
            string addr;
            name = tb_name.Text.ToString(); //문자열로 바꿔 넣기
            age = int.Parse(tb_age.Text.ToString()); //문자열타입을 정수형으로 형변환하여 넣기
            addr = tb_addr.Text.ToString();
            //쿼리문을 준비
            //String sql ="INSERT INTO userTbl(name,age,addr)VALUES('";sql += name + "'," + age + ",'" + addr + "');";
            String sql = "INSERT INTO userTbl(name,age,addr)VALUES('" + name + "'," + age + ",'" + addr + "');";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery(); //insert, update등 실행갯수 반환

            MessageBox.Show("입력 성공~");
        }

        string str_name;
        string str_age;
        string str_addr;
        ListViewItem lvi;
        private void bt_select_Click(object sender, EventArgs e) //추출버튼
        {
            lv_show.Items.Clear(); //폼의 listview 초기화
            //쿼리문 준비
            String sql = "SELECT name,age,addr FROM userTbl";
            cmd.CommandText = sql; //트럭에 짐 싣기
            MySqlDataReader reader; //짐을 연결한 끈, 서버에서 데이터를 가져오도록 실행

            reader = cmd.ExecuteReader();

            //끈 당기기
            while (reader.Read())
            {
               
                str_name = reader["name"].ToString();
                str_age = reader["age"].ToString();
                str_addr = reader["addr"].ToString();

                lvi = new ListViewItem(new string[] { str_name, str_age, str_addr });
                lv_show.Items.Add(lvi);
            }
            reader.Close();
        }
    }
}

댓글