Programming/C & C++ (4) 썸네일형 리스트형 Byte alignment 하드웨어의 제약이나 성능상의 이유로 데이터들을 특정한 바이트 경계들에 맞게 배치한다. 이를 바이트 정렬(Byte alignment)라고 부른다. 이때 바이트 경계에 맞추기 위해서 객체의 자료 끝에 추가적인 바이트들을 채우게 된다. 32비트 ) 4bytes -> 2bytes -> 1byte 64비트 ) 8bytes -> 4bytes -> 2bytes -> 1byte Struct 에서도 같은 기준이 적용되는데 정렬기준을 찾을때는 구조체의 처음 멤버가 이닌 전체 멤버중에서 가장 큰 데이터 타입을 기준으로 정한다. 여기서 또 한가지 중요한것은 구조체 선언시 멤버들의 순서에 따라 바이트가 늘어 날 수 있다는 것인데 struct _test { char a; long b; chat c; } 는 (long 이 8바이트.. [ODBC] ODBC test 윈도우에서 ODBC 함수에 대한 간단한 테스트를 확인하기 위해서는 소스 및 컴파일러등 부수적인것들이 많이 필요하다. 매번 테스트할때 마다 준비하기는 불편한다. ODBCTest 라는 (https://www.progress.com/support/evaluation/download-resources/download-tools) 프로그램을 통해서 함수 단위로 테스트를 할 수 있다. [ODBC] SQLSetStmtAttr SQL_ATTR_PARAMS_PROCESSED_PTR insert 등을 수행하고 나서 처리된 건수를 나타내는 변수의 포인터, SQLExecute() 에서 SQL_SUNCCESS_WITH_INFO 나 나온 경우 SQL_ATTR_PARAM_STATUS_PTR 로 등록된 배열의 상태를 검사하여 SQL_PARAM_SUCCESS_WITH_INFO, SQL_PARAM_ERROR, SQL_PARAM_DIAG_UNAVAILABLE 일때 bad record 처리를 해야 한다. SQL_ATTR_ATOMIC_EXECUTION 은 goldilocks 에서만 지원하는 것인가?? [ODBC] SQLGetInfo Connection 의 여러 정보를 확인하기 위해 쓰이는 함수 DBMS 의 종류를 식별하기 위해 방법을 찾던 중 아래와 같이 할 수 있었음 SQLCHAR dbmsName[1024]; SQLCHAR dbmsVerName[1024]; SQLSMALLINT buffersize; retcode = SQLGetInfo(hdbc, SQL_DBMS_NAME, dbmsName, (SQLSMALLINT)1024, (SQLSMALLINT *)&buffSize); retcode = SQLGetInfo(hdbc, SQL_DBMS_VER, dbmsVerName, (SQLSMALLINT)1024, (SQLSMALLINT *)&buffSize); printf ("SQL_DBMS_NAME : %s\n", dbmsName); prin.. 이전 1 다음