Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}