Quote Retrieval
The get_stock( )
function provides all
stock information from MySQL for the stock with the specified symbol.
It formulates a
query
based on the ticker symbol and sticks the results into a
Stock
structure.
Stock *get_stock(char *symbol) { char *query = "SELECT symbol, openPrice, currPrice, high52, low52, \ FROM Stock WHERE symbol = '%s'"; char *sql; int state; error = (char *)NULL; sql = (char *)malloc((strlen(query) + strlen(symbol) + 1) * sizeof(char)); sprintf(sql, query, symbol); state = mysql_query(connection, sql); free(sql); if( state != 0 ) { error = mysql_error(connection); return (Stock *)NULL; } else { MYSQL_RES *result; Stock *stock; MYSQL_ROW row; result = mysql_store_result(connection); if( result == (MYSQL_RES *)NULL ) { error = mysql_error(connection); return (Stock *)NULL; } stock = (Stock *)malloc(sizeof(Stock)); row = mysql_fetch_row(result); if( !row ) { error = "Invalid symbol."; return (Stock *)NULL; } stock->symbol = row[0]; stock->open_price = atof(row[1]); stock->current_price = atof(row[2]); stock->high52 = atof(row[3]); stock->low52 = atof(row[4]); return stock; } }
The first line of the function is where we prepare the query. It
includes the entire query except for a %s
placeholder for the ticker symbol. We will insert this into the
string later using sprintf(
)
.
The function next clears out the error message used by the
get_error( )
helper function. Clearing out the error message is critical since MySQL actually manages the memory allocated ...
Get Managing & Using MySQL, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.