안녕하세요 OLEDB 이용해서 data insert를 하다가 막혀서 질문드립니다.
DB는 cubrid 2008을 사용하고 있습니다.
아까 질문을 남겼는데 알고보니 7.3게시판이었네요;
CRowset::Insert 를 이용해서 DB에 data를 집어 넣는데
테이블을 만들어서 처음에 data를 insert할때는 잘 되다가
한개 행을 PRIMARY KEY로 설정하고 나서부터는 data가 들어가지를 않네요;;;
아래 코드를 보시면..
CoInitialize(NULL);
CAUDIT_LINE lineInfo;
lineInfo.OpenAll();
lineInfo.m_AUDIT_LINE_ID = auditLineID;
lineInfo.m_dwAUDIT_LINE_IDStatus = DBSTATUS_S_OK;
lineInfo.m_PAGE = pageNumber;
lineInfo.m_dwPAGEStatus = DBSTATUS_S_OK;
lineInfo.m_LINE = lineNumber;
lineInfo.m_dwLINEStatus = DBSTATUS_S_OK;
USES_CONVERSION;
std::string lineDataA = W2A(lineData.c_str());
strcpy_s(lineInfo.m_TEXT, lineDataA.c_str());
lineInfo.m_dwTEXTLength = lineDataA.size();
lineInfo.m_dwTEXTStatus = DBSTATUS_S_OK;
lineInfo.m_TIME_STAMP.year = st.wYear;
lineInfo.m_dwTIME_STAMPLength = 4;
lineInfo.m_TIME_STAMP.month = st.wMonth;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.day = st.wDay;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.hour = st.wHour;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.minute = st.wMinute;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.second = st.wSecond;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_dwTIME_STAMPStatus = DBSTATUS_S_OK;
HRESULT hr = lineInfo.Insert();
lineInfo.CloseAll();
CoUninitialize();
처음에는 이렇게 해서 db insert가 잘 됐습니다.
근데 4,5번 줄
ineInfo.m_AUDIT_LINE_ID = auditLineID;
lineInfo.m_dwAUDIT_LINE_IDStatus = DBSTATUS_S_OK;
여기에 있는 AUDIT_LINE_ID를 primarykey(NOT NULL, auto increase)로 바꾸고 위의 두줄을 주석처리하고 나서부터는
모든 data가 insert가 되지 않고 있습니다.
AUDIT_LINE_ID는 DB상에서 자연적으로 숫자가 메겨져서 순차적으로 증가하고 나머지 값들은 정상적으로 insert되는게
목적인데요;
hr 은 DB_E_ERRORSOCCURRED가 뜨네요
답변 부탁드립니다.
CRowset::Insert 를 이용해서 DB에 data를 집어 넣는데
테이블을 만들어서 처음에 data를 insert할때는 잘 되다가
한개 행을 PRIMARY KEY로 설정하고 나서부터는 data가 들어가지를 않네요;;;
아래 코드를 보시면..
CoInitialize(NULL);
CAUDIT_LINE lineInfo;
lineInfo.OpenAll();
lineInfo.m_AUDIT_LINE_ID = auditLineID;
lineInfo.m_dwAUDIT_LINE_IDStatus = DBSTATUS_S_OK;
lineInfo.m_PAGE = pageNumber;
lineInfo.m_dwPAGEStatus = DBSTATUS_S_OK;
lineInfo.m_LINE = lineNumber;
lineInfo.m_dwLINEStatus = DBSTATUS_S_OK;
USES_CONVERSION;
std::string lineDataA = W2A(lineData.c_str());
strcpy_s(lineInfo.m_TEXT, lineDataA.c_str());
lineInfo.m_dwTEXTLength = lineDataA.size();
lineInfo.m_dwTEXTStatus = DBSTATUS_S_OK;
lineInfo.m_TIME_STAMP.year = st.wYear;
lineInfo.m_dwTIME_STAMPLength = 4;
lineInfo.m_TIME_STAMP.month = st.wMonth;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.day = st.wDay;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.hour = st.wHour;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.minute = st.wMinute;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_TIME_STAMP.second = st.wSecond;
lineInfo.m_dwTIME_STAMPLength = 2;
lineInfo.m_dwTIME_STAMPStatus = DBSTATUS_S_OK;
HRESULT hr = lineInfo.Insert();
lineInfo.CloseAll();
CoUninitialize();
처음에는 이렇게 해서 db insert가 잘 됐습니다.
근데 4,5번 줄
ineInfo.m_AUDIT_LINE_ID = auditLineID;
lineInfo.m_dwAUDIT_LINE_IDStatus = DBSTATUS_S_OK;
여기에 있는 AUDIT_LINE_ID를 primarykey(NOT NULL, auto increase)로 바꾸고 위의 두줄을 주석처리하고 나서부터는
모든 data가 insert가 되지 않고 있습니다.
AUDIT_LINE_ID는 DB상에서 자연적으로 숫자가 메겨져서 순차적으로 증가하고 나머지 값들은 정상적으로 insert되는게
목적인데요;
hr 은 DB_E_ERRORSOCCURRED가 뜨네요
답변 부탁드립니다.