MySQL读写改删使用C语言实现(c mysql读写改删)

MySQL读写改删:使用C语言实现

MySQL是一种常用的关系型数据库管理系统,可以用C语言编写程序来实现对MySQL数据库的各项操作。这篇文章将介绍如何使用C语言对MySQL数据库进行读写改删操作。

1. 连接到MySQL服务器

在使用MySQL数据库之前,首先要做的就是连接到MySQL服务器。我们可以使用mysql_real_connect函数来连接到MySQL服务器,该函数的原型如下:

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user,const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag);

其中,mysql是一个MYSQL句柄,host、user、passwd、db、port和unix_socket分别代表MySQL服务器的主机名、用户名、密码、数据库名、端口和UNIX套接字。client_flag参数可以用来指定连接选项,如SSL连接和压缩。

连接成功后,我们可以通过mysql_select_db函数选择要操作的数据库,该函数的原型如下:

int mysql_select_db(MYSQL *mysql, const char *db);

其中,db参数表示要选择的数据库名。如果选择成功,该函数将返回0。

2. 查询数据

我们可以使用mysql_query函数发送SQL查询语句,该函数的原型如下:

int mysql_query(MYSQL *mysql, const char *stmt_str);

其中,stmt_str是要执行的SQL查询语句。如果查询成功,该函数将返回0,并且我们可以使用mysql_store_result函数来取得查询结果,该函数的原型如下:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

该函数将返回一个MYSQL_RES结构体指针,该结构体包含了查询结果的详细信息,我们可以通过mysql_fetch_row函数来依次获取每一行的数据,该函数的原型如下:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

该函数将返回一个MYSQL_ROW结构体指针,我们可以使用该结构体访问每一行数据的各个字段。

下面是一个简单的示例,展示了如何查询MySQL数据库中的数据:

#include

#include

int mn()

{

MYSQL mysql;

MYSQL_RES *result;

MYSQL_ROW row;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql, “localhost”, “root”, “password”, “test”, 0, NULL, 0))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

return 1;

}

if (mysql_query(&mysql, “SELECT * FROM user”))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

return 1;

}

result = mysql_store_result(&mysql);

while ((row = mysql_fetch_row(result)))

{

printf(“%s %s %s\n”, row[0], row[1], row[2]);

}

mysql_free_result(result);

mysql_close(&mysql);

return 0;

}

3. 插入、更新和删除数据

除了查询数据外,我们还可以使用SQL语句向MySQL数据库中插入、更新和删除数据。我们可以使用mysql_query函数来发送这些SQL语句,如下所示:

插入数据:

INSERT INTO table_name (column1, column2, column3, …)

VALUES (value1, value2, value3, …);

更新数据:

UPDATE table_name

SET column1 = value1, column2 = value2, …

WHERE condition;

删除数据:

DELETE FROM table_name

WHERE condition;

下面是一个示例程序,展示了如何向MySQL数据库中插入、更新和删除数据:

#include

#include

int mn()

{

MYSQL mysql;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql, “localhost”, “root”, “password”, “test”, 0, NULL, 0))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

return 1;

}

mysql_autocommit(&mysql, 0); //关闭自动提交

if (mysql_query(&mysql, “INSERT INTO user (name, age, sex) VALUES (‘张三’, 20, ‘男’)”))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

mysql_rollback(&mysql); //回滚事务

return 1;

}

if (mysql_query(&mysql, “UPDATE user SET age = 21 WHERE name = ‘张三'”))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

mysql_rollback(&mysql); //回滚事务

return 1;

}

if (mysql_query(&mysql, “DELETE FROM user WHERE age = 20”))

{

fprintf(stderr, “%s\n”, mysql_error(&mysql));

mysql_rollback(&mysql); //回滚事务

return 1;

}

mysql_commit(&mysql); //提交事务

mysql_close(&mysql);

return 0;

}

该程序使用mysql_autocommit函数关闭了自动提交,然后执行了一系列的SQL操作,并在最后通过mysql_commit函数提交了所有的修改。如果在执行SQL操作时发生了错误,程序将使用mysql_rollback函数回滚事务并返回错误。


数据运维技术 » MySQL读写改删使用C语言实现(c mysql读写改删)