자료 참고 안내 1. 본 자료실의 모든 자료 저작권은 ㈜에이치앤에스에 있습니다.

본 자료는 개발하시는데 참고자료 용도로 사용하실 수 있으며 저작권 표시 없이 복사,게재, 출판 하실 수 없습니다. 외부 게재 사용 시 반드시 출처 항목에 회사명과 사이트 주소를 반드시 명시해 주시기 바랍니다.
[표기 예] 출처 : ㈜에이치앤에스(www.hnsts.co.kr) 또는 ㈜HNS(www.hnsts.co.kr)

2. 제품 개발 시 내용과 예제 코드는 수정 및 검증작업을 직접 하셔야 하며 문제 발생에 대한 책임은 ㈜HNS사와 무관합니다.

본사는 자료를 최신내용으로 유지하기 위해 노력하고 있으며 제공되는 정보의 오류 및 내용이 정확하지 않을 경우 사전 공지 없이 업데이트 될 수 있습니다. 자료의 문제점 발견 시 본사로 문의주시면 검토하여 자료를 수정하도록 하겠습니다.

[C++(MFC)] 데이터베이스(ADOCE) 예제
작성일 2018-08-28 수정일 2023-05-03 조회수 2039
분류 Knowhow
적용
플랫폼
키워드 ADOCE, C++, API, MFC
첨부파일 TechNote47_Example.zip

본 자료는
1. 프로그램 동작 전 준비사항(설치환경 및 필요 설치파일)
2. ADOCE RunTime 설치하기
3. CADOCE.cpp의 ADOCE Class 관련 설명 및 사용법
4. 프로그램 핵심 소스
순서로 진행합니다.

본 자료는 ADO(ActiveX Data Object)CE를 활용하여 C++에서 Database를 접근하기 위한 환경구성에 대하여 설명하는 자료입니다.
IEC-Series는 기본적으로 ADO.NET을 내장하고 있어 .NET Compact Framework기반에서 Database 접근을 바로 할 수 있습니다. 그렇지만 C++(API/MFC)환경에서 지원 가능한 ADOCE가 기본적으로 포함되어 있지 않아 관련된 파일을 설치하셔야 합니다. 본문에서 설명되는 내용은 HNS의 IEC-Series에서 ADOCE를 연동하기 위한 방법을 설명합니다.

1. 프로그램 동작 전 준비사항(설치환경 및 필요 설치파일)

IEC-Series에 따라 개발 툴과 필요한 설치파일 및 DB 파일이 다르므로 다음 표를 참고바랍니다

IEC266-Series IEC667-Series IEC1000-Series
개발툴 Visual Studio 2005/2008 Visual Studio 2008
설치파일명 HNS_ADO_Setup.exe HNS_ADO_Setup 1000 6.0.exe
HNS_ADO_Setup 1000 7.0.exe
Sample DB File emp.sdf(36Kb), 3.1 Version emp.sdf(40Kb) 3.5 Version
SQL Connection()
부분 차이점
[중요]
m_ADOCE.SQLConnection(L"Provider
=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;
Data source=\\Flash Disk\\emp.sdf");
[중요]
m_ADOCE.SQLConnection(L"Provider
=Microsoft.SQLSERVER.CE.OLEDB.3.5;
Data source=\\Flash Disk\\emp.sdf");
IEC266 IEC667 IEC1000
개발툴 Visual Studio 2005/2008 Visual Studio 2008
설치파일명 HNS_ADO_Setup.exe HNS_ADO_Setup 1000 6.0.exe
HNS_ADO_Setup 1000 7.0.exe
Sample DB File emp.sdf(36Kb), 3.1 Version emp.sdf(40Kb) 3.5 Version
SQL Connection()
부분 차이점
[중요]
m_ADOCE.SQLConnection(L"Provider
=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;
Data source=\\Flash Disk\\emp.sdf");
[중요]
m_ADOCE.SQLConnection(L"Provider
=Microsoft.SQLSERVER.CE.OLEDB.3.5;
Data source=\\Flash Disk\\emp.sdf");

주의DB파일의 버전을 3.5버전에서 3.0버전으로 다운그레이드가 불가능하므로 차후에 3.0 DB버 전을 사용할 필요가 있는 경우 별도로 DB 파일 백업을 해두시고 업그레이드를 진행하시기 바랍니다. DB 파일의 버전을 3.0에서 3.5버전으로 업그레이드 가능하며 보다 자세한 사항은 Tech Note 63. IEC-Series 제품별 SQL Compact(SQL Mobile)지원 버전 및 SQL Query Analyzer 사용법 안내를 참고바랍니다.

2. ADOCE RunTime 설치하기
  • [STEP-1] 본 문서의 첨부파일을 다운로드 하시기 바랍니다.
  • [STEP-2] ActiveSync 연결하여 HNS_ADO_Setup.exe 파일을 IEC-Series 장치에 복사합니다. (복사는 임의의 폴더에 하시면 됩니다.)
    복사 후 장치에서 파일을 실행하시기 바랍니다. IEC266/667-Series는 HNS_ADO_Setup.exe 파일을 복사하여 실행하고 IEC1000-Series는 HNS_ADO_1000_Setup.exe 파일을 복사하여 실행합니다.
  • [STEP-3] 복사된 HNS_ADO_Setup.exe 파일을 IEC-Series에서 실행하여, Setup Start를 클릭한 후,설치경로 설정없이 "OK" 버튼을 클릭합니다.
  • [STEP-4] 설치 완료 메시지가 화면이 출력되면, 정상적으로 설치 완료
    주의설치가 완료되면 Flash Disk\ADODB 폴더가 생성됩니다. IEC-Series 바탕화면의 Registry Save를 클릭하여 시스템의 변경사항을 저장한 다음 IEC-Series를 재부팅 해줍니다. Flash Disk\ADODB 폴더 내부 파일을 삭제하면 안됩니다.

3. CADOCE.CPP의 ADOCE Class 관련 설명 및 사용법

시리얼(Serial) 통신에 관련된 모든 기능을 담당하는 CSerialPort 클래스로서 세부 내용은 다음과 같이 이루어져 있습니다. 예제소스의 CSerialPort.cpp 파일 참고

// COM을 초기화
// COINIT_MULTITHREADED는 COM을 여러 개 작동시키기 위함
BOOL CADOCE::SQLInit()
{
HRESULT hr;
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(FAILED(hr)) return FALSE;
return TRUE;

}
(반환값) BOOL : COM 초기화 성공인 경우 True 리턴. COM 초기화 실패하는 경우 False 리턴

// SQLConnection의 인자 bstrCon은 SQL을 연결하기 위한 ADOCE의 데이터 베이스 연결 문자열
BOOL CADOCE::SQLConnection(BSTR bstrCon)
{
HRESULT hr;
// COM 객체의 결과를 받기위한 hr
hr = CoCreateInstance( CLSID_ADOCEConnection, NULL, CLSCTX_INPROC_SERVER, IID_IADOCEConnection, (LPVOID*) &m_adoceCon);
// CoCreateInstance 실패
if(FAILED(hr)) return FALSE;
// m_adoceCon이 NULL인 경우
if(!m_adoceCon) return FALSE;

// SQLConnection 함수 호출 시 넘겨받은 bstrCon을 데이터베이스 연결 문자열로 호출한다
hr = m_adoceCon->Open( bstrCon, NULL, NULL, adOpenUnspecified);
// 만약 연결이 제대로 되면 호출 시 넘겨 받은 bstrCon에서 지정하는 DB와 연결됨
if(FAILED(hr)) return FALSE;
return TRUE;
}
(인자) BSTR bstrCon : SQLConnection 함수를 호출할 경우 호출하는 쪽에서 넣어줄
‘데이터베이스 연결 문자열’
(반환 값) BOOL : OPEN Connect 성공인 경우 True 리턴. OPEN Connect 실패하는 경우 False 리턴

// 쿼리를 실행하는 기능
// adCmdText : SQL 쿼리 문장. adCmdTable : 테이블 이름
// adCmdStoreProc : 저장 프로시저. adCmdUnknown : 다양한 방법

BOOL CADOCE::SQLExecute(BSTR bstrCmd)
{
HRESULT hr;
// 넘겨받은 쿼리를 Execute를 통해 처리. 결과는 IADOCERecordset 형태로 반환
hr = m_adoceCon->Execute(bstrCmd, NULL,adCmdText, &m_adoceRec);
if(FAILED(hr)) return FALSE;
if(!m_adoceRec) return FALSE;
return TRUE;
}
(인자) BSTR bstrCmd : SQLExecute 함수를 호출할 경우 실행할 SQL쿼리
(반환값) BOOL : 쿼리 Execute 성공인 경우 True 리턴. 쿼리 Execute 실패하는 경우 False 리턴

// 현재 쿼리의 결과로 처리된 데이터가 담긴 IADOCERecordset으로부터 한줄의 레코드를
// 가져오는 기능을 수행. 가져온 데이터는 IADOCEFields 형태의 전역 변수에 들어가면서 IADOCEFields 형태로 반환하게 구성

IADOCEFields* CADOCE::GetFields()
{
m_adoceRec → get_Fields(&m_adoceFields);
return m_adoceFields;
}
(반환값) IADOCEFields m_adoceFields : IADOCERecordset으로부터 가져온 한줄의 데이터

// GetFields 함수로부터 사용자가 원하는 위치의 필드를 가져오게 합니다.
// 가져온 데이터는IADOCEField 형태의 전역변수에 들어가면서 IADOCEField 형태로 반환

IADOCEField* CADOCE::GetField(int iField)
{
GetFields() → get_Item(_variant_t((long)iField), &m_adoceField);
return m_adoceField;
}
(인자) int iField : 지정한 위치의 필드
(반환값) IADOCEField m_adoceField : 사용자가 원하는 위치의 필드

// 가져온 한 줄의 레코드에 몇 개의 필드가 있는지 확인하는 기능
LONG CADOCE::GetFieldCount()
{
LONG lFieldCount;
GetFields() → get_Count(&lFieldCount);
return lFieldCount;
}
(반환값) LONG lFieldCount : 레코드 집합의 필드 개수

// 지정한 위치의 필드명을 반환하는 기능
LPCWSTR CADOCE::GetFieldName(int iField)
{
IADOCEField * pField = GetField(iField);
if(!pField)
{
return NULL;
}
BSTR strFieldName;
pField → get_Name(&strFieldName);
return strFieldName;
}
(인자) int iField : 필드에서 지정한 위치
(반환값) BSTR strFieldName : 필드로부터 가져온 이름

// 지정한 위치의 필드로부터 데이터를 반환하는 기능
VARIANT CADOCE::GetFieldValue(int iField)
{
VARIANT value;
VariantInit(&value);
IADOCEField * pField = GetField(iField);
if(!pField)
{
return _variant_t((long)0);
}
pField → get_Value(&value);
return value;
}
(인자) int iField : 필드에서 지정한 위치
(반환값) VARIANT value : 필드로부터 가져온 데이터

// GetFieldValue 함수로부터 반환받은 데이터를 문자열로 변환하는 기능
LPCWSTR CADOCE::GetFieldValueString(int iField)
{
VARIANT value = GetFieldValue(iField);
VARIANT valueString;
VariantInit(&valueString);
if(value.vt == VT_BSTR)
{
valueString = value;
}
else
{
VariantChangeType(&valueString, &value, 0, VT_BSTR);
}
return valueString.bstrVal;
}
(인자) int iField : 필드에서 지정한 위치
(반환값) VARIANT valueString.bstrVal : 반환되는 데이터

// Recordset을 첫번째 레코드로 이동
BOOL CADOCE::MoveFirst()
{
if(!m_adoceRec)
{
return FALSE;
}
HRESULT hr = m_adoceRec->MoveFirst();
return (!FAILED(hr));
}
(반환값) BOOL : 데이터가 없으면 FALSE, 데이터가 있으면 TRUE

// Recordset을 다음 레코드로 이동
BOOL CADOCE::MoveNext()
{
if(!m_adoceRec)
{
return FALSE;
}
HRESULT hr = m_adoceRec → MoveNext();
return (!FAILED(hr));
}
(반환값) BOOL : 데이터가 없으면 FALSE, 데이터가 있으면 TRUE

// 더 이상 읽을 데이터가 없는지 확인하는 기능을 수행. 다른 레코드를 계속 이동시킬 경우 더 이상 이동시킬 데이터가 없는지 확인하는 수단으로 사용
BOOL CADOCE::IsEOF()
{
if(!m_adoceRec)
{
return FALSE;
}
VARIANT_BOOL fValue;
HRESULT hr = m_adoceRec → get_EOF(&fValue);
return (fValue == VARIANT_TRUE);
}
(반환값) BOOL : True는 이동시킬 데이터가 있음. False는 이동시킬 데이터가 없음

// Release하고 Close함으로 데이터 베이스로부터 사용 중지됨
void CADOCE::SQLClose()
{
if(m_adoceCon)
{
m_adoceCon->Release();
m_adoceCon → Close();
m_adoceCon = NULL;
}
if(m_adoceRec)
{
m_adoceRec->Release();
m_adoceRec → Close();
m_adoceRec = NULL;
}
}
-

// COM 사용 해제
void CADOCE::SQLUnInit()
{
CoUninitialize();
}
(반환값) 없음
C++ 예제코드
소스 코드는 참고 및 학습용으로 버그 및 여러 가지 문제가 있을 수 있습니다.

[예제동작순서] C++(MFC)용 데이터베이스(ADOCE) 예제 테스트 (IEC1000-Series 기준)
STEP-1. 데이터베이스 연결
STEP-2. 데이터베이스에 데이터 추가
STEP-3. 데이터베이스에서 특정 데이터 삭제
STEP-4. 데이터베이스에서 특정 데이터 검색
STEP-5. 리스트 정보 업데이트

// STEP-1. 데이터 베이스 연결
BOOL CHNS_ADOCE_EXAMPLEDlg::OnInitDialog()
// …테이블 생성 소스 코드 생략…
BOOL bRes;
// 데이터베이스 연결 담당. (인자) BSTR bstrCon : SQL을 연결하기 위한 ADOCE의 데이터베이스 연결 문자열
// (반환값) BOOL : 연결이 성공한 경우 TRUE를 반환

// IEC266-Series, IEC667-Series 사용 시. 3.0버전의 경우
// bRes = m_ADOCE.SQLConnection(L"Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data source=\\Flash Disk\\emp.sdf");

// IEC1000-Series 사용 시. 3.5버전의 경우
bRes = m_ADOCE.SQLConnection(L"Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data source=\\Flash Disk\\emp.sdf");

if(bRes == FALSE)
{
MessageBox(L"OpenConnect 실패", L"", MB_OK);
return TRUE;
}

// 리스트 중에 *을 검색
SearchUpdate(L"*");
return TRUE; // return TRUE unless you set the focus to a control
}

// STEP-2. 데이터베이스에 데이터 추가
// 사용자가 입력한 이름, 나이, 직급, 부서, 입사일 정보를 얻어와 테이블 EMPLOYEE에 저장
void CHNS_ADOCE_EXAMPLEDlg::OnBnClickedButadd()
{
// …테이블 컬럼에 입력되는 변수 선언 부분 소스코드 생략…. 테이블 EMPLOYEE에 저장
strSQL.Format(L"INSERT INTO EMPLOYEE(NAME, AGE, POSITION, PART, ENTERING)
VALUES('%s', %d, '%s', '%s', '%s')"
, strName, iAge, strPos, strPart, strEntDate);

// SQLExecute를 통해 쿼리 실행
bRes = m_ADOCE.SQLExecute(strSQL.GetBuffer());
if(bRes == FALSE)
{
MessageBox(L"Execute 실패",L"",MB_OK);
return;
}
SearchUpdate(L"*");
}

// STEP-3. 데이터베이스에서 특정 데이터 삭제
void CHNS_ADOCE_EXAMPLEDlg::OnBnClickedButdel()
{
// strName : 삭제할 데이터명
m_TxtName1.GetWindowTextW(strName);
// 데이터 삭제 쿼리문
strSQL.Format(L"DELETE FROM EMPLOYEE WHERE NAME = '%s'", strName);
bRes = m_ADOCE.SQLExecute(strSQL.GetBuffer());
if(bRes == FALSE)
{
MessageBox(L"Execute 실패", L"", MB_OK);
return;
}
SearchUpdate(strName);
}

// STEP-4. 데이터베이스에서 특정 데이터 검색
void CHNS_ADOCE_EXAMPLEDlg::SearchUpdate(CString strKeyword)
{
// 검색어가 *이거나 공백인 경우 전체 데이터 검색
if((strKeyword == L"*") || (strKeyword == L""))
{
strSQL = L"SELECT * FROM EMPLOYEE";
}
else
{
// 사용자가 입력한 strKeyword로 쿼리 수행
strSQL.Format(L"SELECT * FROM EMPLOYEE WHERE NAME = '%s'", strKeyword);
}

// strSQL에 저장된 쿼리문을 실행
bRes = m_ADOCE.SQLExecute(strSQL.GetBuffer());
if(bRes == FALSE)
{
MessageBox(L"Execute 실패", L"", MB_OK);
return;
}

if(m_ADOCE.MoveFirst() == FALSE)
{
MessageBox(L"읽을 데이터 없음", L"", MB_OK);
}
ListInfoUpdate();
}

// STEP-5. 리스트 정보 업데이트
void CHNS_ADOCE_EXAMPLEDlg::ListInfoUpdate(void)
{
int iCount = 0;
// 현재 모든 아이템을 삭제
m_ListInfo.DeleteAllItems();
do
{
CString strItem; LV_ITEM li; li.mask = LVIF_TEXT; li.iItem = iCount++; li.iSubItem = 0;
strItem.Format(L"%s", m_ADOCE.GetFieldValueString(0));
li.pszText = strItem.GetBuffer();
m_ListInfo.InsertItem(&li);

for(int i = 1; i < 5; i++)
{
li.mask = LVIF_TEXT;
li.iItem = iCount - 1;
li.iSubItem = i;
strItem.Format(L"%s", m_ADOCE.GetFieldValueString(i));
li.pszText = strItem.GetBuffer();
m_ListInfo.SetItem(&li);
}
}
// 다음 데이터가 존재하고 아이템의 끝이 아닌 경우
while((m_ADOCE.MoveNext() == TRUE) && (m_ADOCE.IsEOF() == FALSE));
}
맨 위로
팝업닫기

(주)에이치앤에스('http://hnsts.co.kr/'이하 '(주)에이치앤에스 웹사이트')는 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다.

(주)에이치앤에스 웹사이트는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

○ 본 방침은 2011년 4월 1일부터 시행됩니다.

1. 개인정보의 처리 목적 (주)에이치앤에스 웹사이트는 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적 이외의 용도로는
사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정 입니다.
가. 민원사무 처리
민원인의 신원 확인, 민원사항 확인, 사실조사를 위한 연락 · 통지, 처리결과 통보 등을 목적으로 개인정보를 처리합니다.
2. 개인정보 파일 현황
1. 개인정보 파일명 : 고객의 소리
  • - 개인정보 항목 : 이메일, 휴대전화번호, 자택전화번호, 이름, 서비스 이용 기록, 접속 로그, 쿠키, 접속 IP 정보
  • - 수집방법 : 웹사이트
  • - 보유근거 : 이용자 동의
  • - 보유기간 : 3년
3. 개인정보의 제3자 제공에 관한 사항
① (주)에이치앤에스 웹사이트는 원칙적으로 이용자의 개인정보를 제1조에서 명시한 목적 범위 내에서 처리하며, 본래의 범위를 초과하여 처리하거나 제3자에게 제공하지 않습니다.
다만, 다음의 경우에는 개인정보를 제3자에게 제공할 수 있습니다.
  • – 이용자가 사전에 제3자 제공 및 공개에 동의한 경우
  • – 법령 등에 의해 제공이 요구되는 경우
  • – 서비스의 제공에 관한 계약의 이행을 위하여 필요한 개인정보로서 경제적/기술적인 사유로 통상의 동의를 받는 것이 현저히 곤란한 경우
  • – 개인을 식별하기에 특정할 수 없는 상태로 가공하여 이용하는 경우
4. 정보주체의 권리,의무 및 그 행사방법 이용자는 개인정보주체로서 다음과 같은 권리를 행사할 수 있습니다.
① 정보주체는 (주)에이치앤에스 웹사이트에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
  • 1. 개인정보 열람요구
  • 2. 오류 등이 있을 경우 정정 요구
  • 3. 삭제요구
  • 4. 처리정지 요구
② 제1항에 따른 권리 행사는 (주)에이치앤에스 웹사이트에 대해 개인정보 보호법 시행규칙 별지 제8호 서식에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 (주)에이치앤에스 웹사이트는
이에 대해 지체 없이 조치하겠습니다.
③ 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 (주)에이치앤에스 웹사이트는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.
④ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을
제출하셔야 합니다.
5. 제3자에게의 개인정보 제공
① (주)에이치앤에스 웹사이트는 다음의 개인정보 항목을 처리하고 있습니다.
<민원사무 처리>
– 필수항목 : 이름, 휴대전화번호, 자택전화번호, 이메일, 서비스 이용 기록, 접속로그, 쿠키, 접속IP 정보
6. 개인정보의 파기
(주)에이치앤에스 웹사이트는 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.
  • –파기절차 이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.-파기기한이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.
  • –파기방법 전자적 파일 형태의 정보는 기록을 재생할 수 없는 기술적 방법을 사용합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.
7. 개인정보의 안전성 확보 조치
(주)에이치앤에스 웹사이트는 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.
1. 정기적인 자체 감사 실시
개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.
2. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.
3. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.
4. 해킹 등에 대비한 기술적 대책
(주)에이치앤에스 웹사이트는 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에
시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.
5. 개인정보의 암호화
이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의
별도 보안기능을 사용하고 있습니다.
6. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.
7. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여
외부로부터의 무단 접근을 통제하고 있습니다.
8. 문서보안을 위한 잠금장치 사용
개인정보가 포함된 서류, 보조저장매체 등을 잠금장치가 있는 안전한 장소에 보관하고 있습니다.
9. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.
8. 개인정보 보호책임자 작성
① (주)에이치앤에스 웹사이트는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를
지정하고 있습니다.
▶ 개인정보 보호책임자
성명 : 김진효
소속 : (주)에이치앤에스
전화번호 : 02-6402-8001
이메일 : hns@hnsts.co.kr
② 정보주체께서는 (주)에이치앤에스 웹사이트의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및
담당부서로 문의하실 수 있습니다. (주)에이치앤에스 웹사이트는 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.
9. 개인정보침해 구제방법
정보주체는 개인정보침해로부터 구제받고자 하는 경우 다음과 같은 기관에 도움을 요청할 수 있습니다.
▶ 개인정보 침해신고센터 (한국인터넷진흥원 운영)
– 소관업무 : 개인정보 침해사실 신고, 상담 신청
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
▶ 개인정보 분쟁조정위원회 (한국인터넷진흥원 운영)
– 홈페이지 : privacy.kisa.or.kr
– 전화 : (국번없이) 118
– 주소 : (138-950) 서울시 송파구 중대로 135 한국인터넷진흥원 개인정보침해신고센터
10. 개인정보 처리방침 변경
① 이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할
것입니다.
팝업닫기

본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며, 이를 위반시 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다.

게시일 : 2011.4.1