Dev/Dev basics
WINAPI - Mysql 연결과 간단한 쿼리
HeBhy
2008. 8. 7. 06:14
// WINAPI 상에서 ODBC 없이 Mysql 라이브러리로 바로 DB연결.
// 아래는 보통 stdafx.h에 포함.
// Mysql Server 5.1 이상 설치되어 있어야 함(설치시 옵션에서 Include/lib 포함 체크)
// 위 프로그램의 bin 폴더의 libmysql.dll 필요.
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <winsock2.h>
#include <mysql.h>
#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "1234"
#define DB_NAME "test"
#define SQL_CREATE_TABLE "CREATE TABLE `mysql_api_test` (\
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,\
`num` INT NULL ,\
`string` VARCHAR( 20 ) NULL \
) TYPE = MYISAM ;" //"
#define SQL_INSERT_RECORD "INSERT INTO `mysql_api_test` ( `id` , `num` , `string` ) \
VALUES (\
NULL , '%d', '%s'\
);" //"
#define SQL_SELECT_RECORD "SELECT * FROM `mysql_api_test`"
#define SQL_DROP_TABLE "DROP TABLE `mysql_api_test`"
int DBConn()
{
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
int i;
char query[255];
TCHAR msg[255];
mysql_init(&conn);
// DB 연결
connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0);
if(connection==NULL)
{
wsprintf(msg, (LPCWSTR)"Mysql connection error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("1"), MB_OK);
return 1;
}
// 테이블 생성
query_stat=mysql_query(connection, SQL_CREATE_TABLE);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("2"), MB_OK);
return 1;
}
// 레코드 삽입
for(i=0;i<5;i++)
{
sprintf_s(query, 255, SQL_INSERT_RECORD, 100+i, TEXT("아놔 ㅋㅋ"));
query_stat = mysql_query(connection, query);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("3"), MB_OK);
return 1;
}
}
// 셀렉트
query_stat=mysql_query(connection,SQL_SELECT_RECORD);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("4"), MB_OK);
return 1;
}
// 결과 출력
sql_result=mysql_store_result(connection);
while((sql_row=mysql_fetch_row(sql_result))!=NULL)
{
wsprintf(msg, (LPCWSTR)"%2s %2s %s\n",sql_row[0],sql_row[1],sql_row[2]);
//MessageBox(g_hWnd, msg, TEXT("5"), MB_OK);
}
mysql_free_result(sql_result);
// 테이블 삭제
query_stat=mysql_query(connection,SQL_DROP_TABLE);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("6"), MB_OK);
return 1;
}
// DB 연결 닫기
mysql_close(connection);
return 0;
}
// 아래는 보통 stdafx.h에 포함.
// Mysql Server 5.1 이상 설치되어 있어야 함(설치시 옵션에서 Include/lib 포함 체크)
// 위 프로그램의 bin 폴더의 libmysql.dll 필요.
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <winsock2.h>
#include <mysql.h>
#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "1234"
#define DB_NAME "test"
#define SQL_CREATE_TABLE "CREATE TABLE `mysql_api_test` (\
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,\
`num` INT NULL ,\
`string` VARCHAR( 20 ) NULL \
) TYPE = MYISAM ;" //"
#define SQL_INSERT_RECORD "INSERT INTO `mysql_api_test` ( `id` , `num` , `string` ) \
VALUES (\
NULL , '%d', '%s'\
);" //"
#define SQL_SELECT_RECORD "SELECT * FROM `mysql_api_test`"
#define SQL_DROP_TABLE "DROP TABLE `mysql_api_test`"
int DBConn()
{
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
int i;
char query[255];
TCHAR msg[255];
mysql_init(&conn);
// DB 연결
connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0);
if(connection==NULL)
{
wsprintf(msg, (LPCWSTR)"Mysql connection error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("1"), MB_OK);
return 1;
}
// 테이블 생성
query_stat=mysql_query(connection, SQL_CREATE_TABLE);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("2"), MB_OK);
return 1;
}
// 레코드 삽입
for(i=0;i<5;i++)
{
sprintf_s(query, 255, SQL_INSERT_RECORD, 100+i, TEXT("아놔 ㅋㅋ"));
query_stat = mysql_query(connection, query);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("3"), MB_OK);
return 1;
}
}
// 셀렉트
query_stat=mysql_query(connection,SQL_SELECT_RECORD);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("4"), MB_OK);
return 1;
}
// 결과 출력
sql_result=mysql_store_result(connection);
while((sql_row=mysql_fetch_row(sql_result))!=NULL)
{
wsprintf(msg, (LPCWSTR)"%2s %2s %s\n",sql_row[0],sql_row[1],sql_row[2]);
//MessageBox(g_hWnd, msg, TEXT("5"), MB_OK);
}
mysql_free_result(sql_result);
// 테이블 삭제
query_stat=mysql_query(connection,SQL_DROP_TABLE);
if (query_stat != 0)
{
wsprintf(msg, (LPCWSTR)"Mysql query error : %s", mysql_error(&conn));
MessageBox(g_hWnd, msg, TEXT("6"), MB_OK);
return 1;
}
// DB 연결 닫기
mysql_close(connection);
return 0;
}