April 2002
Intermediate to advanced
442 pages
16h 37m
English
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 ...
Read now
Unlock full access