C++操作mysql数据库范例代码
#include <my_global.h> #include <mysql.h> void TestMySQL() { TRACE("MySQL client version: %s\n", mysql_get_client_info()); MYSQL *conn = mysql_init(NULL); if (conn == NULL) { TRACE("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); } if (mysql_real_connect(conn, "127.0.0.1", "user", "pass", "testdb", 0, NULL, 0) == NULL) { TRACE("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); } mysql_query(conn, "set names utf8"); // SELECT mysql_query(conn, "SELECT * FROM nihongo"); MYSQL_RES *result = mysql_store_result(conn); int num_fields = mysql_num_fields(result); CString str = _T(""); wchar_t bufUnicode[MAX_PATH]; char bufUTF8[MAX_PATH]; MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { for (int i = 0; i < num_fields; i++) { if (row[i] == NULL) { TRACE("NULL "); continue; } int iLenUnicode = MultiByteToWideChar(CP_UTF8, 0, row[i], -1, NULL, 0); if (iLenUnicode <= sizeof(bufUnicode)/sizeof(bufUnicode[0])) { MultiByteToWideChar(CP_UTF8, 0, row[i], -1, bufUnicode, MAX_PATH); str += bufUnicode; str += _T(", "); } } TRACE("\n"); } mysql_free_result(result); // INSERT CTime now = CTime::GetCurrentTime(); CString s_now = now.Format(_T("%Y-%m-%d %H:%M:%S")); CString insert = _T("INSERT INTO nihongo VALUES('本日は") + s_now + _T("です')"); wchar_t *p = insert.GetBuffer(); int iLenUtf8 = WideCharToMultiByte(CP_UTF8, 0, p, -1, NULL, 0, NULL, NULL); if (iLenUtf8 <= sizeof(bufUTF8)) { WideCharToMultiByte(CP_UTF8, 0, p, -1, bufUTF8, sizeof(bufUTF8), NULL, NULL); mysql_query(conn, bufUTF8); } insert.ReleaseBuffer(); mysql_close(conn); AfxMessageBox(str); }