2017-10-08 3 views
-1

VS2013을 사용하는 mySQL 테이블에서 DATETIME 값을 읽을 수 없습니다.C++에서 mySQL DATETIME 값 가져 오기

sql::mysql::MySQL_Driver* m_driver; 
sql::Connection* m_conn; 
sql::Statement* m_stmt; 
sql::ResultSet* m_res; 

m_driver = sql::mysql::get_driver_instance(); 
m_conn = m_driver->connect(ch_hostName, ch_userName, ch_pwd); 

m_stmt = m_conn->createStatement(); 
m_res = m_stmt->executeQuery("select tip, id1, datum from recordLocker where id1 = 'A0001' and tip = 1"); 

try 
{ 
    m_res->getString("datum"); 
} 
catch (sql::SQLException& e) 
{ 
    TRACE1("\nSQL Error %d\n", e.getErrorCode()); 
} 

내가 "SQL 오류 0"에 geting있어
: 나는 MySQL의 커넥터-1.1.9-win32에서 사용하고
(mysqlcppconn.lib는) 다음

this is the row containing the datas

내 코드입니다 나는 또한 시도 : 동일한 오류 코드

m_res->getInt64("datum"); 
m_res->getUInt64("datum"); 

(m_res가 비어 있지).

도움 주셔서 감사합니다.

+0

'DATETIME'이 문자열이나 정수 값도이다. – user0042

+0

sql :: ResultSet에 getDateTime() 함수가 없습니다. 이것이 제 문제입니다. – janos

답변

0

커넥터를 mysql-5.7.19-win32로 변경했습니다.
이 커넥터는 문자열 형식의 모든 열을 반환합니다.이 열은 정수, 이중 또는 ... 변환 할 수 있습니다.

여기 내 코드입니다 :

MYSQL* m_sql; 
MYSQL* m_conn; 

mysql_init(m_sql) 
m_conn = mysql_real_connect(m_sql, ch_Host, ch_User, ch_Pwd, ch_Db, 0, 0, 0); 

mysql_query(m_conn, "select * from recordLocker"); 

MYSQL_RES* m_res = mysql_use_result(m_conn); 

MYSQL_ROW m_row; 

while(m_row = mysql_fetch_row(m_res)) 
{ 
    CString szDate = CString(mysqlRow[6]); 
    //szDate is in the following format "YYYY-mm-dd hh:mm:ss.000000" 
}