int CMySQLDynamicRecordSet::MoveLast() { if(m_hStmt) { if(m_CacheAllData) { my_ulonglong RowCount=mysql_stmt_num_rows(m_hStmt); mysql_stmt_data_seek(m_hStmt,RowCount-1); return FetchRow(); } else { return DBERR_NOT_IMPLEMENT; } } else { return DBERR_NO_RECORDS; } }
int CMySQLDynamicRecordSet::MoveFirst() { if(m_hStmt) { if(m_CacheAllData) { mysql_stmt_data_seek(m_hStmt,0); return FetchRow(); } else { return DBERR_NOT_IMPLEMENT; } } else { return DBERR_NO_RECORDS; } }
static int dbd_mysql_get_row(apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum) { MYSQL_ROW r; int ret = 0; if (res->statement) { if (res->random) { if (rownum >= 0) { mysql_stmt_data_seek(res->statement, (my_ulonglong)rownum); } } ret = mysql_stmt_fetch(res->statement); } else { if (res->random) { if (rownum >= 0) { mysql_data_seek(res->res, (my_ulonglong) rownum); } } r = mysql_fetch_row(res->res); if (r == NULL) { ret = 1; } } if (ret == 0) { if (!*row) { *row = apr_palloc(pool, sizeof(apr_dbd_row_t)); } (*row)->row = r; (*row)->res = res; } else { mysql_free_result(res->res); apr_pool_cleanup_kill(pool, res->res, (void*)mysql_free_result); ret = -1; } return ret; }
/* boolean dataSeek (in long long offset); */ NS_IMETHODIMP jxMySQL50Statement::DataSeek(PRInt64 offset, PRBool *_retval) { if (mConnection == nsnull) { SET_ERROR_RETURN (JX_MYSQL50_ERROR_NOT_CONNECTED); } if (mSTMT == nsnull) { SET_ERROR_RETURN (JX_MYSQL50_ERROR_STMT_NULL); } if (offset < 0 || offset >= mRowCount) { *_retval = PR_FALSE; SET_ERROR_RETURN (JX_MYSQL50_ERROR_ILLEGAL_VALUE); } mysql_stmt_data_seek(mSTMT, offset); *_retval = PR_TRUE; return NS_OK; }
/** * store_stmt_results - Buffer all results of a query on the client * Returns -1 on error, number_of_rows >= 0 if ok. */ static int store_stmt_results(MYSQL_STMT *stmt, const char *query, MYSQL_BIND bind_col[], unsigned long ncols) { my_ulonglong nrows; int i; if (stmt == NULL || ncols == 0) return -1; if (mysql_stmt_store_result(stmt)) { error("can not store query result for \"%s\": %s", query, mysql_stmt_error(stmt)); return -1; } nrows = mysql_stmt_affected_rows(stmt); if (nrows == (my_ulonglong)-1) { error("query \"%s\" returned an error: %s", query, mysql_stmt_error(stmt)); return -1; } while (mysql_stmt_fetch(stmt) == 0) for (i = 0; i < ncols; i++) { if (bind_col[i].error && *bind_col[i].error) { error("result value in column %d truncated: %s", i, mysql_stmt_error(stmt)); return -1; } } /* Seek back to begin of data set */ mysql_stmt_data_seek(stmt, 0); return nrows; }
bool MyBoundResults::Rewind() { mysql_stmt_data_seek(m_stmt, 0); m_CurRow = 0; return true; }
static int dbd_mysql_select(apr_pool_t *pool, apr_dbd_t *sql, apr_dbd_results_t **results, const char *query, int seek) { int sz; int ret; if (sql->trans && sql->trans->errnum) { return sql->trans->errnum; } ret = mysql_query(sql->conn, query); if (!ret) { if (sz = mysql_field_count(sql->conn), sz > 0) { if (!*results) { *results = apr_palloc(pool, sizeof(apr_dbd_results_t)); } (*results)->random = seek; (*results)->statement = NULL; #if APU_MAJOR_VERSION >= 2 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 3) (*results)->pool = pool; #endif if (seek) { (*results)->res = mysql_store_result(sql->conn); } else { (*results)->res = mysql_use_result(sql->conn); } apr_pool_cleanup_register(pool, (*results)->res, free_result,apr_pool_cleanup_null); } } else { ret = mysql_errno(sql->conn); } #if APU_MAJOR_VERSION >= 2 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 3) if (TXN_NOTICE_ERRORS(sql->trans)) { #else if (sql->trans) { #endif sql->trans->errnum = ret; } return ret; } #if APU_MAJOR_VERSION >= 2 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 3) static const char *dbd_mysql_get_name(const apr_dbd_results_t *res, int n) { if ((n < 0) || (n >= mysql_num_fields(res->res))) { return NULL; } return mysql_fetch_fields(res->res)[n].name; } #endif static int dbd_mysql_get_row(apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum) { MYSQL_ROW r = NULL; int ret = 0; if (res->statement) { if (res->random) { if (rownum >= 0) { mysql_stmt_data_seek(res->statement, (my_ulonglong)rownum); } } ret = mysql_stmt_fetch(res->statement); switch (ret) { case 1: ret = mysql_stmt_errno(res->statement); break; case MYSQL_NO_DATA: ret = -1; break; default: ret = 0; /* bad luck - get_entry will deal with this */ break; } } else { if (res->random) { if (rownum >= 0) { mysql_data_seek(res->res, (my_ulonglong) rownum); } } r = mysql_fetch_row(res->res); if (r == NULL) { ret = -1; } } if (ret == 0) { if (!*row) { *row = apr_palloc(pool, sizeof(apr_dbd_row_t)); } (*row)->row = r; (*row)->res = res; #if APU_MAJOR_VERSION >= 2 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 3) (*row)->len = mysql_fetch_lengths(res->res); #endif } else { apr_pool_cleanup_run(pool, res->res, free_result); } return ret; }
void handle_select(ETERM *msg) { ETERM *epos, *ecount, *ecols, *erows, *resp; my_ulonglong pos, count; epos = erl_element(2, msg); ecount = erl_element(3, msg); pos = ERL_INT_UVALUE(epos); count = ERL_INT_UVALUE(ecount); erl_free_term(epos); erl_free_term(ecount); if (results == NULL) { resp = erl_format("{error, result_set_does_not_exist}"); write_msg(resp); erl_free_term(resp); return; } if (ERL_IS_TUPLE(epos)) { char *pos_type; unsigned int pos_count; pos_type = ERL_ATOM_PTR(erl_element(1, epos)); pos_count = ERL_INT_UVALUE(erl_element(2, epos)); if (strncmp(pos_type, SELECT_ABSOLUTE, strlen(SELECT_ABSOLUTE)) == 0) { resultoffset = pos_count - 1; } else if (strncmp(pos_type, SELECT_RELATIVE, strlen(SELECT_RELATIVE)) == 0) { resultoffset += pos_count - 1; } else { resp = erl_format("{error, unknown_position, ~w}", epos); write_msg(resp); erl_free_term(resp); return; } } else { if (strncmp((char *)ERL_ATOM_PTR(epos), SELECT_NEXT, strlen(SELECT_NEXT)) == 0) { handle_next(NULL); return; } else { resp = erl_format("{error, unknown_position, ~w}", epos); write_msg(resp); erl_free_term(resp); return; } } mysql_stmt_data_seek(sth, resultoffset); ecols = make_cols(); erows = make_rows(count); resultoffset += count; resp = erl_format("{selected, ~w, ~w}", ecols, erows); erl_free_term(erows); erl_free_term(ecols); write_msg(resp); erl_free_term(resp); }
void wxMySQLRecordset::Seek(unsigned int rowindex) { unsigned int topindex(GetRowCount()-1); printf("MYSQL_STMT_DATA_SEEK\r\n"); mysql_stmt_data_seek(m_Stmt, std::max((int)0, (int)std::min(topindex, rowindex))); }