MySQL 연동
개요
지난 시간에는 MySQL과 visual studio를 연동하는 기본적인 방법에 대해 배웠다. 이번 시간에는 MySQL에서 새로운 테이블을 정의하고 visual studio를 사용해 이 테이블에 데이터를 업데이트하는 과정을 살펴볼 것이다. 이 과정을 통해, 데이터베이스를 구성하고, 데이터를 관리하는 기본적인 방법을 익혀 보자.
서버 생성 및 기본적인 명령어
먼저 데이터베이스를 구축할 서버를 생성해야 하므로, 새로운 커넥션을 만들어 주자.
서버 명만 설정하고, 나머지는 건드리지 말고 다음 단계로 넘어가면 된다.
다음과 같이 쿼리에 example이라는 database를 생성하고, 이 DB 아래에 example_table이라는 테이블을 생성해주자. 이 테이블은 name이라는 문자와 age라는 정수형 자료를 갖고 있다. 이처럼 새로운 데이터베이스, 테이블 등을 만들 땐 create 명령어를 사용하면 된다.
create database DB명; // DB명 데이터베이스 생성
create table table명(datatype) // datatype을 데이터 타입들로 갖는 테이블 생성
테이블의 특정 컬럼 값을 표시하고 싶다면 select 문을 사용하면 된다. 여기서 example_table의 모든 컬럼들을 보고 싶을 땐 '*' 문자를 이용하면 된다.
select 컬럼명 from 테이블명 where 조건; // 테이블에서 특정 조건을 만족하는 컬럼 출력
이제 insert into 명령어를 통해 example_table에 2살의 "A"라는 데이터를 넣어준다.
insert into 테이블명 values (data); // data라는 데이터를 테이블에 추가
insert into 테이블명 (datatype) values (data); // data라는 데이터를 테이블에 추가
Visual studio와 연동
위의 과정을 visual stuido에서 진행해보자. 기초적인 연동 방법에 대한 설명은 지난 게시글을 참조하자.
#include <iostream>
#include <mysql.h>
#include <string>
int main()
{
MYSQL mysql;
mysql_init(&mysql);
MYSQL 정보를 담을 mysql 구조체를 선언해주고, 서버와의 연결을 초기화하는 데 사용하는 메모리를 할당하기 위해 mysql_init() 함수를 사용해주자.
if (mysql_real_connect(&mysql, "localhost", "root", "password", "example", 3306, NULL, 0))
{
std::cerr << "Failed to connect to MYSQL\n";
return 0;
}
MySQL 서버와의 연결을 확인하기 위해 mysql_real_connect() 함수를 사용한다. 이때 mysql_real_connect() 함수의 형태는 다음과 같다.
즉, mysql_init()에 의해 초기화된 객체 포인터, 연결하려는 서버의 호스트 이름, 로그인하는 데 사용하는 사용자 이름, 사용자의 비밀번호, 연결 후 사용할 데이터베이스 이름, 포트 번호를 확인하는 과정이다. 만약 연결에 실패하면 에러 메시지를 출력하고 프로그램을 종료하게 설정하였다.
std::string name = "B";
int age = 3;
std::string insert_query
= "INSERT INTO example_table (name, age) VALUES ('" + name + "', " + std::to_string(age) + ")";
if (mysql_query(&mysql, insert_query.c_str()))
{
std::cerr << "Query exectuion error: " << mysql_error(&mysql) << "\n";
return 0;
}
std::cout << "New record added successfully\n";
mysql_close(&mysql);
return 0;
}
이제 추가할 데이터는 string name, int age 형식이므로, 추가할 데이터 형식을 미리 지정한 후 insert 쿼리문을 작성한다. 그리고 mysql_query() 함수를 이용하여 insert_query에 저장된 SQL 쿼리를 MYSQL 서버에 보내면 된다. 그후 메모리 누수를 방지하기 위해 mysql_close() 함수를 이용해 메모리를 해제하였다.
총합본
#include <iostream>
#include <mysql.h>
#include <string>
int main()
{
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "password", "example", 3306, NULL, 0))
{
std::cerr << "Failed to connect to MYSQL\n";
return 0;
}
std::string name = "B";
int age = 3;
std::string insert_query
= "INSERT INTO example_table (name, age) VALUES ('" + name + "', " + std::to_string(age) + ")";
if (mysql_query(&mysql, insert_query.c_str()))
{
std::cerr << "Query exectuion error: " << mysql_error(&mysql) << "\n";
return 0;
}
std::cout << "New record added successfully\n";
mysql_close(&mysql);
return 0;
}
요약
MySQL 기본 문법
1. create: 데이터베이스나 테이블을 생성하는 명령어
a. DB 생성: create database <database_name>
b. 테이블 생성: create table <table_name> (column1 datatpye, column2 datatpye, ...)
2. insert: 테이블에 데이터를 사입하는 데 사용되는 명령어
- insert into <table_name> (column1, column2, ...) values (value1, value2, ...)
3. select: 테이블에서 데이터를 조회하는 데 사용되는 명령어
a. select column1, column2, ... from <table_name>
b. select * from <table_name>
'CS > 데이터베이스' 카테고리의 다른 글
[MySQL] 데이터 백업과 수정 with C++ (0) | 2023.08.16 |
---|---|
[MySQL] Visual studio 연동 - 한글 인코딩 (0) | 2023.07.13 |
[MySQL] MySQL과 Visual Studio 연동하기 (0) | 2023.07.09 |