Приветствую! У меня проблема, я активно использую базу данных MySQL версии 5.0.67-community-nt под Windows Server 2003 Web Edition. В комплекте с базой данных идет Заголовочные файлы и lib файлы. Код отлично компилируется и прекрасно работает, за исключением закрытия соединения.
И это только одна из 20 функций которая использует базу данных. Дело в том что функция mysql_close не закрывает соединение с сервером базы данных, в последствии чего после более 2к коннектов база просто не принимает соединения, и код соответственно не работает..
Что делать?
| Код | BOOL server_sql_connect(MYSQL *hSql) { #define __LOG_FUNC__ #ifndef __LOG_FUNC__ #define DbgPrint #endif BOOL bRet = FALSE;
mysql_init(hSql); mysql_options(hSql,MYSQL_READ_DEFAULT_GROUP,SQL_DB_NAME); if (!(mysql_real_connect(hSql,SQL_SERVER,SQL_LOGIN,SQL_PASSW,SQL_DB_NAME,0,NULL,0))) { DbgPrint("SQL-> Error connect to SQL Server!\n"); goto end; } else { DbgPrint("SQL-> Succefull connected to SQL Server. Database [%s] selected\n",SQL_DB_NAME); bRet = TRUE; }
end: return bRet; #ifndef __LOG_FUNC__ #define DbgPrint DbgPrintEx #endif }
BOOL server_get_currency(PCHAR CurrencyId,PCHAR Currency) { CHAR SqlQuery[200 * 2] = { 0 }; MYSQL sqlHandle; MYSQL_ROW sqlRow; MYSQL_RES *sqlRes; my_ulonglong Rows = 0,Fields = 0;
if(!server_sql_connect(&sqlHandle)) { goto error_end; }
sprintf((PCHAR)&SqlQuery,"SELECT currency_title FROM _currency WHERE currency_id = '%d' LIMIT 1",CurrencyId); DbgPrint("-> SqlQuery %s\n",(PCHAR)&SqlQuery); if(mysql_query(&sqlHandle,(PCHAR)&SqlQuery) == 0) { sqlRes = mysql_store_result( &sqlHandle ); if(sqlRes != NULL) { Rows = mysql_num_rows( sqlRes ); if(Rows == 1) { while((sqlRow = mysql_fetch_row(sqlRes))) { Rows = mysql_num_fields(sqlRes); DbgPrint("-> Currency is : %s\n",sqlRow[0]); strcpy(Currency,sqlRow[0]); // } mysql_free_result(sqlRes); mysql_close(&sqlHandle); goto end; } else { DbgBreak(); DbgPrint("-> Error get currency!1 fix it !\n"); return FALSE; } } } else { // !mysql_query DbgPrint("-> server_get_currency. Error. Cant do SQL query %s\n",(PCHAR)&SqlQuery); DbgBreak(); goto error_end; }
error_end: return FALSE; end: return TRUE; }
|
http://ipicture.ru/Gallery/Viewfull/24167979.html |