編碼的世界 / 優質文選 / 歷史

c++操作mysql - 查詢


2021年11月04日
-   

講完了連接,接著就講查詢了。
 
mysql的執行和查詢都是使用一下2個接口:
1. mysql_query(MYSQL* mysql, const char* sql);
2. int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length);
 
一下就分別描述這兩個函數:
 
1. mysql_query() int mysql_query(MYSQL *mysql, const char *query)
 
描述執行由“Null終結的字符串”查詢指向的SQL查詢。正常情況下,字符串必須包含1條SQL語句,而且不應為語句添加終結分號(‘;’)或“/g”。如果允許多語句執行,字符串可包含多條由分號隔開的語句。但是連接的時候必須指定CLIENT_MULTI_STATEMENTS選項。
 
mysql_query()不能用於包含二進制數據的查詢,應使用mysql_real_query()取而代之(二進制數據可能包含字符‘/0’,mysql_query()會將該字符解釋為查詢字符串結束)。
如果希望了解查詢是否應返回結果集,可使用mysql_field_count()進行檢查。請參見25.2.3.22節,“mysql_field_count()”。
 
返回值如果查詢成功,返回0。如果出現錯誤,返回非0值。
 
2. mysql_real_query()
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
描述執行由“query”指向的SQL查詢,它應是字符串長度字節“long”。正常情況下,字符串必須包含1條SQL語句,而且不應為語句添加終結分號(‘;’)或“/g”。如果允許多語句執行,字符串可包含由分號隔開的多條語句。但是連接的時候必須指定CLIENT_MULTI_STATEMENTS選項。
 
對於包含二進制數據的查詢,必須使用mysql_real_query()而不是mysql_query(),這是因為,二進制數據可能會包含‘/0’字符。此外,mysql_real_query()比mysql_query()快,這是因為它不會在查詢字符串上調用strlen()。
如果希望知道查詢是否應返回結果集,可使用mysql_field_count()進行檢查25.2.3.22節,“mysql_field_count()”。
 
返回值
如果查詢成功,返回0。如果出現錯誤,返回非0值。
 
 
如果失敗,可使用mysql_error(MYSQL* mysql)看看錯誤信息。
 
 
使用mysql_query和mysql_real_query可以執行任何的mysql語句。不需要在語句末尾加上分號!
對於沒有像select一樣的查詢,需要接著調用mysql_store_result或者mysql_use_result來保存結果集。
對於insert或者delete,create語句,不返回結果集的,判斷返回值看看是否執行成功,然後用mysql_affected_rows函數來
查詢被影響的行數。用mysql_error(MYSQL* mysql)來看錯誤信息。
 
 
 
 
 

熱門文章