我正在C ++中实现mySQL,但遇到了问题。我遇到了段错误。我不确定为什么。
希望有人会知道发生了什么事。
seg错误似乎发生在MYSQL_ROW productList;
行之后的某个地方,尽管我无法查明位置。
void Receiving::getProduct(const string productToReturn) {
MYSQL *connect, mysql; //Pointers to MySQL
connect = mysql_init(&mysql); // Initialize the connections
int totalRows = 0;
connect = mysql_real_connect(connect,SERVER,USER,PASSWORD,DATABASE,0,NULL,0); //Connect to database
if(connect) { //If connection successful
string sqlQuery; //will hold query
MYSQL_RES *resSetProduct; //define product result set
MYSQL_ROW productList; //define row for product
sqlQuery = "SELECT * FROM Inventory WHERE item_id = \' "; //Create query with desired product id
sqlQuery += productToReturn;
sqlQuery += " \'";
mysql_query(connect, sqlQuery.c_str()); // Send query to the database
resSetProduct = mysql_store_result(connect); // Receive the result and store it in resSetProduct
totalRows = mysql_num_rows(resSetProduct); // count of stored rows
if(totalRows == 0){ //nothing found
cout << "Sorry! No inventory found for that product!" << endl;
}
else {
cout << "Product Id In Stock" << endl;
while( (productList = mysql_fetch_row(resSetProduct)) != NULL ) { //printout the products
cout << productList[0] << " " << productList[1] << endl;
}
}
mysql_free_result(resSetProduct);
}
else //Failed to connect
cerr << "Failed To Connect!";
mysql_close(connect);
}
最佳答案
您应该检查mysql_query
是否返回零。如果不是,mysql_store_result
将返回NULL,并且mysql_num_rows
可能会因段错误而失败。
如果mysql_query
返回非零,则可以根据mysql文档检查错误代码,例如。此处:MySQL mysql_query
清除这些错误后,mysql_num_rows
不应再进行段错误。
关于c++ - C++ Seg Fault中的MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45528703/