25.2.3.1. mysql_affected_rows()
my_ulonglong mysql_affected_rows(MYSQL *mysql)
描述
返回上次UPDATE更改的行数,上次DELETE删除的行数,或上次INSERT语句插入的行数。对于UPDATE、DELETE或INSERT语句,可在mysql_query()后立刻调用。对于SELECT语句,mysql_affected_rows()的工作方式与mysql_num_rows()类似。
返回值
大于0的整数表明受影响或检索的行数。“0”表示UPDATE语句未更新记录,在查询中没有与WHERE匹配的行,或未执行查询。“-1”表示查询返回错误,或者,对于SELECT查询,在调用mysql_store_result()之前调用了mysql_affected_rows()。由于mysql_affected_rows()返回无符号值,通过比较返回值和“(my_ulonglong)-1”或等效的“(my_ulonglong)~0”,检查是否为“-1”。
错误
无。
示例:
mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
printf("%ld products updated",(long) mysql_affected_rows(&mysql));
如果在连接至mysqld时指定了标志CLIENT_FOUND_ROWS,对于UPDATE语句,mysql_affected_rows()将返回WHERE语句匹配的行数。
注意,使用REPLACE命令时,如果新行替代了旧行,mysql_affected_rows()返回2。这是因为,在该情况下,删除了重复行后插入了1行。
如果使用“INSERT ... ON DUPLICATE KEY UPDATE”来插入行,如果行是作为新行插入的,mysql_affected_rows()返回1,如果是更新了已有的行,返回2。
25.2.3.2. mysql_autocommit()
my_bool mysql_autocommit(MYSQL *mysql, my_bool mode)
描述
如果模式为“1”,启用autocommit模式;如果模式为“0”,禁止autocommit模式。
返回值
如果成功,返回0,如果出现错误,返回非0值。
错误
无。
25.2.3.3. mysql_change_user()
my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)
描述
更改用户,并使由db指定的数据库成为由mysql指定的连接上的默认数据库(当前数据库)。在后续查询中,对于不包含显式数据库区分符的表引用,该数据库是默认数据库。
如果不能确定已连接的用户或用户不具有使用数据库的权限,mysql_change_user()将失败。在这种情况下,不会改变用户和数据库。
如果不打算拥有默认数据库,可将db参数设置为NULL。
该命令总是会执行活动事务的ROLLBACK操作,关闭所有的临时表,解锁所有的锁定表,并复位状态,就像进行了新连接那样。即使未更改用户,也会出现该情况。
返回值
0表示成功,非0值表示出现错误。
错误
与从mysql_real_connect()获得的相同。
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中丢失了与服务器的连接。
? CR_UNKNOWN_ERROR
出现未知错误。
? ER_UNKNOWN_COM_ERROR
MySQL服务器未实施该命令(或许是较低版本的服务器)。
? ER_ACCESS_DENIED_ERROR
用户或密码错误。
? ER_BAD_DB_ERROR
数据库不存在。
? ER_DBACCESS_DENIED_ERROR
用户没有访问数据库的权限。
? ER_WRONG_DB_NAME
数据库名称过长。
示例:
if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
fprintf(stderr, "Failed to change user. Error: %s\n",
mysql_error(&mysql));
}
25.2.3.4. mysql_character_set_name()
const char *mysql_character_set_name(MYSQL *mysql)
描述
为当前连接返回默认的字符集。
返回值
默认字符集。
错误
无。
25.2.3.5. mysql_close()
void mysql_close(MYSQL *mysql)
描述
关闭前面打开的连接。如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。
返回值
无。
错误
无。
25.2.3.6. mysql_commit()
my_bool mysql_commit(MYSQL *mysql)
描述
提交当前事务。
该函数的动作受completion_type系统变量的值控制。尤其是,如果completion_type的值为2,终结事务并关闭客户端连接后,服务器将执行释放操作。客户端程序应调用mysql_close(),从客户端一侧关闭连接。
返回值
如果成功,返回0,如果出现错误,返回非0值。
错误
无。
25.2.3.7. mysql_connect()
MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)
描述
该函数已过时。最好使用mysql_real_connect()取而代之。
mysql_connect()试图建立与运行在主机上的MySQL数据库引擎的连接。在能够执行任何其他API函数之前,mysql_connect()必须成功完成,但mysql_get_client_info()例外。
这些参数的意义与mysql_real_connect()的对应参数的意义相同,差别在于连接参数可以为NULL。在这种情况下,C API将自动为连接结构分配内存,并当调用mysql_close()时释放分配的内存。该方法的缺点是,如果连接失败,你无法检索错误消息。要想从mysql_errno()或mysql_error()获得错误消息,必须提供有效的MYSQL指针。
返回值
与mysql_real_connect()的相同。
错误
与mysql_real_connect()的相同。
25.2.3.8. mysql_create_db()
int mysql_create_db(MYSQL *mysql, const char *db)
描述
创建由db参数命名的数据库。
该函数已过时。最好使用mysql_query()来发出SQLC