2008/09/10

MySQL Connector/C++ 프리뷰 공개

오늘 MySQL 뉴스레터에서 MySQL Connector/C++ 에 대한 소식을 접하였다.

지금까지 C++ 프로그래밍시 mysql을 컨트롤 하기 위해서는 MySQL C API 를 사용해 왔는데

이제는 그럴 필요가 없을 듯 보인다.

아래는 MySQL Connector/C++ 에대한 기사 내용이다.

MySQL Connetor/C++ 이라는 새로운 커넥터 사용이 가능해졌습니다.  MySQL Connector/C++은 MySQL
서버에 클라이언트 어플리케이션 연결을 위한 C++API를 제공합니다. MySQL Connector/C++은 JDBC 3.0
API와 매우 흡사합니다. MySQL C API(MySQL 클라이언트 라이브러리) 대신 MySQL Connector/C++을
사용하시면 다음과 같은 C++사용자들의 이점을 제공받을 수 있습니다.



- 별도의 C 함수 호출없이, 순수하게 C++ 만을 사용함으로 얻는 편리함

- 잘 디자인된 API – JDBC 3.0지원

- 일반적으로 알려져 있고 잘 문서화된 API-JDBC 3.0 지원

- 객체 지향적 프로그래밍의 패러다임을 지원

- 더욱 짧아진 개발 시간



문서:

 http://forge.mysql.com/wiki/Connector_C++

지금 다운로드:

 http://downloads.mysql.com/forge/connector_cpp_preview


문서 페이지를 열어보면 Connector C++ 에대한 소개와 간단한 사용법이 나온다.

여러가지 면에서 객체화된 MySQL Connector 로 간단 명료하게 작업을 할 수 있게 되어 좋지만 그 중에서도 PreparedStatement 기능을 간단하게 사용할 수 있어서 많이 편리해 졌다.

기존 C API 를 그대로 사용할 때는 바인딩 변수를 만들어 형식과 값을 할당하고 실행 해야 했지만 MySQL Connector C++ 에서는 PreparedStatement 객체를 직접 사용할 수 있어 상당히 편리해 졌다.


//////////////////////////////////////////////
// C API 를 이용한 Prepared Statement

m_pMySQL = mysql_init( NULL );
mysql_real_connect( m_pMySQL, "localhost", "root", "",
NULL, 3306, NULL, NULL);

MYSQL_BIND bind[4];
my_bool mybool[4];
MYSQL_STMT *pStmt = mysql_stmt_init( m_pMySQL );

char szName[20];
int nAge;
char szAlias[20];
char szAddr[255];

sprintf_s( szQuery, "INSERT INTO speedtest ( name, age, alias, addr ) "
"VALUES ( ?, ?, ?, ? )");

mysql_stmt_prepare( pStmt, szQuery, (unsigned long)strlen( szQuery ) );
mysql_stmt_bind_param( pStmt, bind );

for (int nRow = 0 ; nRow < 10000; ++nRow)
{
sprintf_s( szName, "123" );
bind[0].buffer_type = MYSQL_TYPE_VAR_STRING;
bind[0].buffer_length = (unsigned long)strlen( szName);
bind[0].is_null = &mybool[0];
bind[0].buffer = szName;

nAge = 10;
bind[1].buffer_type = MYSQL_TYPE_LONG;
bind[1].is_null = &mybool[1];
bind[1].buffer = &nAge;

sprintf_s( szAlias, "456" );
bind[2].buffer_type = MYSQL_TYPE_VAR_STRING;
bind[2].buffer_length = (unsigned long)strlen( szAlias);
bind[2].is_null = &mybool[2];
bind[2].buffer = szAlias;

sprintf_s( szAddr, "123456" );
bind[3].buffer_type = MYSQL_TYPE_VAR_STRING;
bind[3].buffer_length = (unsigned long)strlen( szAddr);
bind[3].is_null = &mybool[3];
bind[3].buffer = szAddr;

nRst = mysql_stmt_execute( pStmt );
}

mysql_stmt_close( pStmt );
mysql_close( m_pMySQL );



//////////////////////////////////////////////////////
// MySQL Connector C++ 를 이용한 Prepared Statement

sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
sql::PreparedStatement *prep_stmt

driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance();
con = driver->connect(EXAMPLE_HOST, EXAMPLE_PORT,
EXAMPLE_USER, EXAMPLE_PASS);

prep_stmt = con->prepareStatement(
"INSERT INTO speedtest ( name, age, alias, addr )"
"VALUES ( ?, ?, ?, ? )"
);

for (int nRow = 0 ; nRow < 10000; ++nRow)
{
prep_stmt->setString(1, "123");
prep_stmt->setInt( 2, 10);
prep_stmt->setString(3, "456");
prep_stmt->setString(4, "123456");

prep_stmt->execute();
}

delete prep_stmt;
delete con;


Original Post : http://neodreamer-dev.tistory.com/152

No comments :

Post a Comment