| 595 | } |
| 596 | |
| 597 | bool db_pgsql::sql_select(const char* sql, db_rows* result /* = NULL */) |
| 598 | { |
| 599 | // ���ȵ��û�����ͷ��ϴεIJ�ѯ��� |
| 600 | free_result(); |
| 601 | |
| 602 | PGresult* res = (PGresult *) sane_pgsql_query(sql); |
| 603 | if (res == NULL) { |
| 604 | return false; |
| 605 | } |
| 606 | |
| 607 | if (__dbresult_status(res) != PGRES_TUPLES_OK) { |
| 608 | logger_error("db(%s), sql(%s) error(%s)", |
| 609 | dbname_, sql, __dberror_message(conn_)); |
| 610 | __dbclear(res); |
| 611 | return false; |
| 612 | } |
| 613 | |
| 614 | if (__dbntuples(res) <= 0) { |
| 615 | __dbclear(res); |
| 616 | result_ = NULL; |
| 617 | return true; |
| 618 | } |
| 619 | |
| 620 | if (result != NULL) { |
| 621 | pgsql_rows_save(res, *result); |
| 622 | } else { |
| 623 | result_ = NEW db_rows(); |
| 624 | pgsql_rows_save(res, *result_); |
| 625 | } |
| 626 | |
| 627 | return true; |
| 628 | } |
| 629 | |
| 630 | bool db_pgsql::sql_update(const char* sql) |
| 631 | { |
no test coverage detected