c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...
发布日期:2021-06-24 16:13:03 浏览次数:3 分类:技术文章

本文共 2762 字,大约阅读时间需要 9 分钟。

连接例程

用C语言连接MySQL数据库包含两个步骤“

初始化一个连接句柄结构;

实际进行连接。

初始化连接句柄

#include

MYSQL *mysql_init(MYSQL *);

通常传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针。

如果传递一个已有的结构,它将被重新初始化。

出错返回NULL。

连接

MYSQL *mysql_real_connect(MYSQL *connection,

const char *server_host,

const char *sql_user_name,

const char *sql_password,

const char *db_name,

unsigned int port_number,

const char *unix_socket_name,

unsigned int flags);

指针connection必须指向已经被mysql_init初始化过的结构。

server_host既可以是主机名,也可以是IP地址。如果是连接到本地,可以通过指定localhost来优化连接类型。

sql_user_name和sql_password,用户名和密码。

port_number和unix_socket_name应该分别为0和NULL,除非改变了MySQL安装的默认设置。

flag参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特性。0。

如果无法连接,它将返回NULL。

关闭连接

void mysql_close(MYSQL *connection);

设置选项

int mysql_options(MYSQL *connection ,enum option_to_set,const char *argument);

一次只能设置一个选项,所以每设置一个选项就得调用它一次。

成功返回0。

仅能在mysql_init和mysql_real_connect之间调用。

并不是所有的选项都是char类型,因此它们必须被转换为const char *。

enum选项

实际参数类型

说明

MySQL_OPT_CONNECT_TIMEOUT

const unsigned int *

连接超时之前的等待秒数

MySQL_OPT_COMPRESS

None,使用NULL

网络连接中使用压缩机制

MySQL_OPT_COMMAND

const char *

每次连接建立后发送的命令

设置连接超时时间为7秒 unsigned int timeout = 7;

...

connection = mysql_init(NULL);

mysql_options(connection,MYSQL_OPT_CONNECT_TIMEOUT,(const char *)&timeout);

connection = mysql_real_connect(connection...

错误处理

unsigned int mysql_errno(MYSQL *connection);

char *mysql_error(MYSQL *connection);

mysql_errno的返回值实际上是错误码。

mysql_error的返回值是文本错误信息。

执行SQL语句

int mysql_query(MYSQL *connection,const char *query);

接受连接结构指针二号文本字符串形式的有效SQL语句(没有结束的分号)。

受影响的行数(UPDATE,INSERT或DELETE)

my_ulonglong mysql_affected_rows(MYSQL *connection);

返回受之前执行的UPDATE,INSERT或DELETE查询影响的行数。

返回数据的语句(SELECT)

一次提取所有数据

MYSQL_RES *mysql_store_result(MYSQL *connection);

在mysql_store_result调用成功之后,调用mysql_num_rows来得到返回记录的数目。

my_ulonglong mysql_num_rows(MYSQL_RES *result);

从使用mysql_store_result得到的结果结构中提取一行,并把它放到一个行结构中。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

这个函数用来在结果集中进行跳转,设置将会被下一个mysql_fetch_row操作返回的行。参数offset的值是一个行号,0是第一行。

void mysql_data_seek(MYSQL_RES *result,my_ulonglong offset);

mysql_row_tell返回一个偏移值,用来表示结果集中的当前位置,它不是行号,不能用于mysql_data_seek.

MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);

完成了对数据的所有操作后,必须明确的调用mysql_free_result来让MySQL库完成善后处理

void mysql_free_result(MYSQL_RES *result);

一次提取一行数据

MYSQL_RES *mysql_use_result(MYSQL *connection);

处理返回的数据

unsigned int mysql_field_count(MYSQL *connection);

它接受连接对象,并返回结果集中的字段(列)数目。

简单的打印数据的代码:

void display_row(){

unsigned int field_count;

field_count = 0;

while(field_count < mysql_field_count(&my_connection)){

printf("%s",sqlrow[field_count]);

field_count++;

}

printf("\n");

}

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);

将元数据和数据提取到一个新的结构中

MySQL_FIELD结构中的成员

说明

char *name;

列名,字符串

char *table;

列所属的表名

unsigned int flags;

NOT NULL FLAG、PRI KEY FLAG、UNSIGNED FLAG. AUTO_ INCREMENT_FLAC和BINARY_ FLAG

转载地址:https://blog.csdn.net/weixin_33744799/article/details/113377492 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql怎么分组查询所有数据库_Mysql-4 分组查询与子查询
下一篇:mysql行级锁升级_mysql innodb 行级锁升级

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月24日 14时45分55秒