bool db_pgsql::sql_select(const char* sql, db_rows* result /* = NULL */) { // 优先调用基类方法释放上次的查询结果 free_result(); PGresult* res = (PGresult *) sane_pgsql_query(sql); if (res == NULL) return false; if (__dbresult_status(res) != PGRES_TUPLES_OK) { logger_error("db(%s), sql(%s) error(%s)", dbname_, sql, __dberror_message(conn_)); __dbclear(res); return false; } if (__dbntuples(res) <= 0) { __dbclear(res); result_ = NULL; return true; } if (result != NULL) pgsql_rows_save(res, *result); else { result_ = NEW db_rows(); pgsql_rows_save(res, *result_); } return true; }
bool db_mysql::sql_select(const char* sql, db_rows* result /* = NULL */) { // 优先调用基类方法释放上次的查询结果 free_result(); if (sane_mysql_query(sql) == false) return false; MYSQL_RES *my_res = __mysql_store_result(conn_); if (my_res == NULL) { if (__mysql_errno(conn_) != 0) { logger_error("db(%s), sql(%s) error(%s)", dbname_, sql, __mysql_error(conn_)); close(); } return false; } my_ulonglong nrow = __mysql_num_rows(my_res); if (nrow <= 0) { __mysql_free_result(my_res); result_ = NULL; return true; } if (result != NULL) mysql_rows_save(my_res, *result); else { result_ = NEW db_rows(); mysql_rows_save(my_res, *result_); } return true; }