반응형
데이터 가져오기에 이어서 데이터 삽입, 삭제를 알아보려고 한다
데이터 삽입

먼저 위와 같이 다이얼로그를 수정한다

클래스 마법사에서 버튼 클릭 함수를 추가한다
void Ct1Dlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
// ID과 이름, 주소를 저장할 객체들
CString str_id, str_name, str_addr, str_query;
// Edit 컨트롤에서 복사
GetDlgItemText(IDC_EDIT1, str_id);
GetDlgItemText(IDC_EDIT2, str_name);
GetDlgItemText(IDC_EDIT3, str_addr);
// SQL 명령문 구성
str_query.Format(L"INSERT INTO memberTBL VALUES ('%s', '%s', '%s')", str_id, str_name, str_addr);
SQLHSTMT h_statement;
// Query를 위한 메모리 할당
if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_STMT, mh_odbc, &h_statement))
{
// Query 실행 시 타임 아웃 설정
SQLSetStmtAttr(h_statement, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)15, SQL_IS_UINTEGER);
// SQL 명령문 실행
RETCODE ret = SQLExecDirect(h_statement, (SQLWCHAR*)(const wchar_t*)str_query, SQL_NTS);
// 성공했는지 체크
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
printf("query insert success!\n");
}
// 커밋
SQLEndTran(SQL_HANDLE_ENV, mh_environment, SQL_COMMIT);
// Query 할당 메모리 해제
SQLFreeHandle(SQL_HANDLE_STMT, h_statement);
}
// Edit 값 초기화
SetDlgItemText(IDC_EDIT1, L"");
SetDlgItemText(IDC_EDIT2, L"");
SetDlgItemText(IDC_EDIT3, L"");
// 최신 DB 정보 가져오기
OnClickedButton1();
}
BUTTON2는 회원 가입, 즉 데이터 삽입 버튼이기 때문에 다이얼로그 소스 파일의 2번 버튼 클릭 함수에 위와 같이 코드를 작성한다

이제 삽입할 정보를 입력하고 회원 가입 버튼을 누르면

데이터가 삽입되고 삽입된 최신 데이터 정보들을 가져온다

SSMS에서도 반영된 것을 확인할 수 있다
데이터 삭제
void Ct1Dlg::OnClickedButton3()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
// ListBox에서 선택한 항목의 인덱스
int index = m_List.GetCurSel();
// 선택한 항목이 없으면 종료
if (index == LB_ERR) return;
CString str;
// 선택된 항목의 문자열을 복사
m_List.GetText(index, str);
// 가져온 문자열에서 ID를 분리
for (int i = 0; i < str.GetLength(); i++)
{
// 문자열의 처음 공백인 부분에
if (str[i] == ' ')
{
// NULL 문자 추가
str.SetAt(i, 0);
break;
}
}
// 쿼리 생성
CString str_query;
str_query.Format(L"DELETE FROM memberTBL WHERE memberID = \'%s\'", str);
SQLHSTMT h_statement;
// 쿼리를 위한 메모리 할당
if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_STMT, mh_odbc, &h_statement))
{
// 쿼리 실행 시 타임 아웃 설정
SQLSetStmtAttr(h_statement, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER)15, SQL_IS_UINTEGER);
// 쿼리 실행
RETCODE ret = SQLExecDirect(h_statement, (SQLWCHAR*)(const wchar_t*)str_query, SQL_NTS);
// 성공했는지 체크
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
printf("query delete success!\n");
}
// 커밋
SQLEndTran(SQL_HANDLE_ENV, mh_environment, SQL_COMMIT);
// 쿼리를 위해 할당한 메모리 해제
SQLFreeHandle(SQL_HANDLE_STMT, h_statement);
}
// 최신 DB 정보 가져오기
OnClickedButton1();
}
BUTTON3 클릭 함수를 위와 같이 작성한다

실행해서 삭제하고 싶은 데이터를 클릭한 뒤 회원 탈퇴를 누르면

이렇게 데이터가 삭제되고

SSMS에서도 삭제된 것을 확인할 수 있다
반응형
'CS > DB' 카테고리의 다른 글
| [MySQL] python과 C, C++로 MySQL 연동하기 (0) | 2024.02.23 |
|---|---|
| [MySQL] 초기 접속, 비밀번호 변경, DB · TABLE 생성, CRUD (0) | 2024.02.22 |
| 데이터베이스 기초 (1) | 2024.02.13 |
| [ODBC, 비주얼 스튜디오, SQL Server] 데이터 가져오기 (0) | 2023.11.04 |
| [SQL Server] 설치 & 사용 (0) | 2023.11.04 |