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函数回滚事务并返回错误。