참고자료 : https://dev.mysql.com/doc/refman/8.0/en/c-api-multiple-queries.html
// ... 생략
mysql_set_server_option(&conn, enum_mysql_set_option::MYSQL_OPTION_MULTI_STATEMENTS_ON);
connection = mysql_real_connect(&conn, host, user, pw, db, 3306, (const char*)nullptr, CLIENT_MULTI_STATEMENTS);
if (connection == nullptr)
{
LOG("%d ERROR : %s, %d\n", mysql_errno(&conn), mysql_errno(&conn));
return -1;
}
else
{
LOG("DB Connected!");
if (mysql_select_db(&conn, db))
{
LOG("%d ERROR : %s, %d\n", mysql_errno(&conn), mysql_errno(&conn));
return -1;
}
}
// ... 생략
// 사용
Singleton<DBManager>::GetInst()->ProcessQuery(QUERY_MAKE_CHATTING_ROOM().c_str());
MYSQL_RES* res = Singleton<DBManager>::GetInst()->GetsqlRes();
while (auto row = mysql_fetch_row(res))
{
int roomkey = atoi(row[0]);
}
while (mysql_next_result(Singleton<DBManager>::GetInst()->GetConn()) > 0)
{
}
결국은 초기화시 mysql_set_server_option과 mysql_real_connect 부분의 마지막 파라미터 설정을 한 후
query 실행할 때 (만약에 해당 쿼리가 다중 쿼리나 프로시저 일 때) 원하는 작업을 끝낸 후
mysql_next_result가 0이 될 때까지 계속 돌려주면 그만이다.
조금 더 다듬는다면 mysql 클래스 내에서 모든 쿼리를 처리하게 할 수 있을 것 같다.
이것 때문에 오늘 구현 하려던 채팅 기능이 무로 돌아갔다 아 ..
무려 2시간반을 ㅠㅠ ... 처음엔 프로시저 문제라고 생각도 못했는데 흑흑
아무튼 db때문에 더 이상 고통 받고 싶지 않다. 지금 중요한게 db가 아니란 말이야 제발 ㅠ
'데이터베이스' 카테고리의 다른 글
[MySQL] C 연동시 한글 깨짐. (0) | 2020.05.11 |
---|