Proud::COdbcCommand 클래스 참조

Public 멤버 함수

void Prepare (COdbcConnection &conn, const String &query)
 
void AppendInputParameter (const COdbcVariant &param, OdbcSqlDataType sqlType=OdbcSqlDataType_UNKNOWN)
 
void AppendOutputParameter (const COdbcVariant &param, OdbcSqlDataType sqlType=OdbcSqlDataType_UNKNOWN)
 
void AppendInputOutputParameter (const COdbcVariant &param, OdbcSqlDataType sqlType=OdbcSqlDataType_UNKNOWN)
 
void SetNullParameter (unsigned int paramIndex, bool state)
 
int Execute (COdbcWarnings *odbcWarnings=NULL)
 
int Execute (COdbcRecordset &recordset, COdbcWarnings *odbcWarnings=NULL)
 

상세한 설명

Prepared Statement를 처리하기 위한 클래스 입니다. COdbcConnection의 Execute와는 달리 한 번 설정된 쿼리를 파라미터 값만 변경하여 계속 사용할 때 유용합니다. Input, Output, Input&Output 파라미터가 필요한 Stored Procedure를 실행할 때도 사용 됩니다.

멤버 함수 문서화

void Proud::COdbcCommand::AppendInputOutputParameter ( const COdbcVariant param,
OdbcSqlDataType  sqlType = OdbcSqlDataType_UNKNOWN 
)

Input&Output 파라미터를 지정할 때 사용됩니다. 데이터를 받아야 하므로 포인터 형식으로만 데이터를 입력할 수 있습니다. 포인터로 입력할 경우 해당 변수의 Scope에 의해 문제가 발생하지 않는지 확인해야 합니다.

  1. int a;
  2. cmd.AppendInputOutputParameter(&a);

입력 데이터에 따라 sqlType이 자동적으로 결정되기 때문에 데이터베이스에 명시적으로 원하는 타입을 넣고 싶을 경우 OdbcSqlDataType을 입력하면 됩니다. ex> int32_t타입의 변수를 int64_t 타입의 데이터로 데이터베이스로 부터 입출력 하고 싶을 경우

  1. int a;
  2. cmd.AppendInputOutputParameter(a, OdbcSqlDataType_BIGINT);

문자열을 입출력 할 경우 반드시 Excute 전후에 Proud::String 클래스의 GetBuffer와 ReleaseBuffer를 사용해야 합니다.

  1. String str;
  2. str = "ABCD"; // 2, 3의 순서가 바뀌면 안됩니다.
  3. str.GetBuffer(100);
  4. cmd.AppendInputOutputParameter(&str);
  5. cmd.Execute();
  6. str.ReleaseBuffer();
  7. str = "EFGH"; // 2, 3, 5, 6을 반복해야 합니다.
  8. str.GetBuffer(100);
  9. cmd.Execute();
  10. str.ReleaseBuffer();

이진 데이터를 받을 경우 Proud::COdbcByteData 클래스를 사용해야 합니다. COdbcByteData는 포인터로만 입력할 수 있습니다.

  1. unsigned char byte[10000];
  2. COdbcByteData byteData(byte, 0, 10000);
  3. cmd.AppendOutputParameter(&byteData);
  4. cmd.Execute();
void Proud::COdbcCommand::AppendInputParameter ( const COdbcVariant param,
OdbcSqlDataType  sqlType = OdbcSqlDataType_UNKNOWN 
)

Input 파라미터를 입력할 때 사용됩니다. 변수의 값만 지속적으로 변경하여 실행하고자 할 경우 포인터 형식으로 데이터를 입력하면 됩니다. 포인터로 입력할 경우 해당 변수의 Scope에 의해 문제가 발생하지 않는지 확인해야 합니다.

  1. int a = 10;
  2. cmd.AppendInputParameter(a); // a의 값이 복사되어 Call by Value 형식으로 작동합니다.
  3. cmd.AppendInputParameter(&a); // a의 주소값을 사용하는 Call by Pointer 형식으로 작동합니다.

입력 데이터에 따라 sqlType이 자동적으로 결정되기 때문에 데이터베이스에 명시적으로 원하는 타입을 넣고 싶을 경우 OdbcSqlDataType을 입력하면 됩니다. ex> int32_t 타입의 변수를 int64_t타입의 데이터로 데이터베이스에 넣고 싶을 경우

  1. int a = 10;
  2. cmd.AppendInputParameter(a, OdbcSqlDataType_BIGINT);

이진 데이터를 입력할 경우 Proud::COdbcByteData 클래스를 이용해야 합니다. COdbcByteData는 포인터로만 입력할 수 있습니다.

  1. unsigned char byte[10000] = "........................."; // 1000바이트 데이터 입력
  2. COdbcByteData byteData(byte, 1000, 10000);
  3. cmd.AppendInputParameter(&byteData);
void Proud::COdbcCommand::AppendOutputParameter ( const COdbcVariant param,
OdbcSqlDataType  sqlType = OdbcSqlDataType_UNKNOWN 
)

Output 파라미터를 지정할 때 사용됩니다. 데이터를 받아야 하므로 포인터 형식으로만 데이터를 입력할 수 있습니다. 포인터로 입력할 경우 해당 변수의 Scope에 의해 문제가 발생하지 않는지 확인해야 합니다.

  1. int a;
  2. cmd.AppendOutputParameter(&a);

입력 데이터에 따라 sqlType이 자동적으로 결정되기 때문에 데이터베이스에 명시적으로 원하는 타입을 넣고 싶을 경우 OdbcSqlDataType을 입력하면 됩니다. ex> 데이터베이스로 부터 int64_t 타입의 데이터를 int32_t타입의 변수로 받고 싶을 경우

  1. int a;
  2. cmd.AppendOutputParameter(a, OdbcSqlDataType_BIGINT);

문자열을 받을 경우 반드시 Excute 전후에 Proud::String 클래스의 GetBuffer와 ReleaseBuffer를 사용해야 합니다.

  1. String str;
  2. str.GetBuffer(100);
  3. cmd.AppendOutputParameter(&str);
  4. cmd.Execute();
  5. str.ReleaseBuffer();
  6. str.GetBuffer(100); // 2, 4, 5를 반복해야 합니다.
  7. cmd.Execute();
  8. str.ReleaseBuffer();

이진 데이터를 받을 경우 Proud::COdbcByteData 클래스를 사용해야 합니다. COdbcByteData는 포인터로만 입력할 수 있습니다.

  1. unsigned char byte[10000];
  2. COdbcByteData byteData(byte, 0, 10000);
  3. cmd.AppendOutputParameter(&byteData);
  4. cmd.Execute();
int Proud::COdbcCommand::Execute ( COdbcWarnings odbcWarnings = NULL)

쿼리를 실행합니다. 쿼리 실행으로 영향을 받은 Row 개수를 반환합니다.

int Proud::COdbcCommand::Execute ( COdbcRecordset recordset,
COdbcWarnings odbcWarnings = NULL 
)

쿼리를 실행합니다. 쿼리 실행으로 영향을 받은 Row 개수를 반환합니다.

매개변수
recordset쿼리 실행후 받아지는 Recordset 객체
void Proud::COdbcCommand::Prepare ( COdbcConnection conn,
const String query 
)

쿼리문을 입력할 때 사용합니다. 쿼리문의 Value는 ?로 입력합니다. (ex> INSERT INTO test(id, name) VALUES(?, ?)) 값을 제외한 명령이나 테이블 이름, 필드 이름등은 ?로 입력할 수 없습니다.

매개변수
connCOdbcConnection 객체
query쿼리문
void Proud::COdbcCommand::SetNullParameter ( unsigned int  paramIndex,
bool  state 
)

파라미터를 NULL 상태를 설정합니다. DB에 데이터를 NULL로 입력하고 싶을 경우 이 함수를 이용해 NULL 상태를 TRUE로 변경 합니다. 한번 설정된 상태는 지속적으로 사용되므로 원 상태로 돌리기 위해선 Execute 후에 FALSE로 다시 세팅해야 합니다.

매개변수
paramIndex파라미터 Index (ex> 1, 2, 3, ...)
statetrue or false