c语言 mysql函数_C语言mysql基本函数

在C连接mysql服务器,需要使用libmysqlclient开发包。在ubuntu系统上可以通过 命令 sudo apt-get install libsqlclient-dev 安装。 和其它和数据库访问类似,具体的过程有 1,连接数据库 2,访问数据 3,处理数据 4,断开连接 下面,接上面的顺序来了解mysql数据库编程所要用到的具体函数 一,连接数据库 1,初始化一个连接句柄 MYSQL *mysql_init(MYSQL *); //参数如果为NULL,则分配一个新的连接句柄 2,int mysql_option(MYSQL *connection, enum option_to_set, const char * argument); //这个函数用来设置连接特性的,也可以不设,一切会默认。而且,每次只能设 置一个选项,想设置多个选项,则需要多次调用。 以下是三个主要的选项,其它 见手册。 枚举选项 实际参数类型 含义 MYSQL_OPT_CONNECT_TIMEOUT   常数,无符号的整数类型   中止连接前等待的秒 数 MYSQL_OPT_COMPRESS    无,使用NULL       在网络连接中使用压缩 MYSQL_INIT_COMMAND    常数 ,char* 连接建立以后发送的命令 3,设置及连接数据库 MYSQL *mysql_real_connect(MYSQL *connection, //连接句柄 const char *server_host, //数据库所在主机名 const char *sql_username; //访问数据库的数据名 const char *sql_password; //密码 const char *db_name; //数据库名 unsigned int port_number, //端口号,为0则使用默认(一般选择) const char *unix_socket_name, //一般为NULL unsigned int flags); //见说明 //它们的含意参数 的名称已经很明白了,而最后一个参数 flags只有两个参数 可供选择 CLIENT_ODBC---如果你确知ODBC正用于远程数据库,则需要用到它。 CLIENT_FOUND_ROW--??? 二,执行SQL语句 mysql_query int mysql_query(MYSQL *connection, const char *query); 利用connection对query的SQL语句执行成功,则返回 0. 三,获取数据 1,检验受影响的行数量 my_ulonglong mysql_affected_rows(MYSQL *connection); 2,检索数据 一般,我们用mysql_query发出查询,利用mysql_store_result或 mysql_use_result执行检索。再可以用mysql_fetch_row来处理数据,最后用 mysql_free_result进行整理工作。 MYSQL_RES *mysql_store_result(MYSQL *connection); //如果执行失败则返回 NULL 实际 返回 的行数 : my_ulonglong mysql_num_rows(MYSQL_RES *result); 获得从store result中得到的结构体,并从中检索单个行,返回给你的行结构体 中的数据。当没有更多的数据,或者出错时,将返回NULL值。 MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); 在�果集合中跳跃,设置由下面的fetch row选项返回 的行。区距值是一个行的 号码,这个值大于零而小于�果集合中的行数量。传递零值将会在下一次调用到 mysql_fetch_row中时返回 第一行。 void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset); 得到一个区距值(off value),表明 在结果集合中当前的位置。它不是行数,所 以不能用mysql_data_seek来使用它。 MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result); 在�果集合中移动当前位置,并将当前的位置返回 MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset); 当使用完一个结果集合后,要使MYSQL库整理分配的对象。 void mysql_free_result(MYSQL_RES *result); 逐行检索数据 MYSQL_RES * mysql_use_result(MYSQL *connection); //它嚅然 也是返回 一个结果集合对象,但在返回 时它实际 上并没有将任何检 索到的数据返回 到结果集合中,而仅仅是将结果集合初始化来接收数据。 注:: 为了检索数据,你必�和以前 一样反复 调用 mysql_fetch_row,直到检 索完所有的数据,如果你在一次use result调用中没有得到所有的数据,那么后面 的数据检索就损坏 了。 处理返回 的数据 得到结果集合中字段的数目。 unsigned int mysql_field_count(MYSQL *connection); 得到关于字段和字段内数据的具体信息 MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result); MYSQL_FIELD结构体的字段 含意 char *name 列的名称,字符串表示 char *table 列所在的表名称 char *def 如果调用mysql_list_field,则包含列的默认值 enum enum_field_types type 列的类型 unsigned int length 列的宽度,在定义表格时指定 unsigned int max_length 如果你使用mysql_store_result,则它包含找到的最 长的实际列长度 ,使用mysql_use_result,则不会对它进行设置 unsigned int flag 告诉你关于列的信息,通常标识有:NOT_NULL_FLAG, PRI_KEY_FLAG,UNSIGNED_FLAG,AUTO_INCREMENT_FLAG,BINARY_FLAG. unsigned int decimals 十进制数,只对数据字段有效。 列的几个常用类型: FIELD_TYPE_DECIMAL FIELD_TYPE_LONG FIELD_TYPE_STRING FIEDL_TYPE_VAR_STRING 宏IS_NUM,如果 字段 类型是数字形式的,则返回 真 三,断开连接及其它 void mysql_close(MYSQL *connection); 处理错误 unsigned int mysql_errno(MYSQL *connection); char *mysql_error(MYSQL *connection); Mysql_get_client_info char *mysql_get_client_info(void); 返回客户正在使用的库版本信息 Mysql_get_host_info char *mysql_get_host_info(MYSQL *connection); 返回服务器连接信息 Mysql_get_server_info char *mysql_get_server_info(MYSQL *connection); 返回当前 连接的服务器信息 Mysql_info char* mysql_info(MYSQL *connection) 返回 最近查询的信息,但只对几个查询类型有效,通常是INSERT和UPDATE语 句,否则返回 NULL Mysql_select_db int mysql_select_db(MYSQL *connection, const char *dbname); 假如用户有合适的权限,可以从默认的数据库转到由参数 �定的数据库。成 功则返回 0 Mysql_shutdown int mysql_shutdown (MYSQL *connection); 如果有合适的权限 ,可以用此来关闭所有连接的数据库服务器。成功则返回 零。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值