学会用C语言写MySQL数据库语句(c 写mysql 语句)

学会用C语言写MySQL数据库语句

MySQL是当前最常用的关系型数据库管理系统之一,许多程序员在日常的工作中都需要使用它。在C语言开发中,操作MySQL数据库也是经常出现的场景。本文将介绍如何用C语言写MySQL数据库语句,帮助读者更快捷地实现对MySQL数据库的操作。

一、安装MySQL开发包

在Ubuntu系统下,可以使用如下命令安装MySQL头文件和库文件:

“`sudo apt-get install libmysqlclient-dev“`

如果是CentOS系统,可以使用如下命令安装:

“`sudo yum install mysql-devel“`

安装完成后,即可在C语言程序中使用MySQL的API进行应用开发。

二、连接MySQL服务器

在使用MySQL API前,需要先连接MySQL服务器。连接MySQL服务器的流程如下:

1.使用mysql_init()函数初始化MySQL结构体。

MYSQL* mysql = NULL;
mysql = mysql_init(mysql);

2.使用mysql_real_connect()函数连接MySQL服务器。

mysql_real_connect(mysql, "localhost", "root", "password", "test", 0, NULL, 0);

其中,参数依次为MySQL结构体、MySQL服务器地址、用户名、密码、要连接的数据库名、端口、Unix套接字、客户端标志等。

3.使用mysql_query()函数发送SQL查询。

mysql_query(mysql, "SELECT * FROM test_table");

其中,参数依次为MySQL结构体、SQL查询语句。

4.使用mysql_store_result()函数存储查询结果。

MYSQL_RES* result = mysql_store_result(mysql);

如果查询的是非SELECT语句(如INSERT、UPDATE、DELETE等),则不需要使用mysql_store_result()函数存储查询结果。

5.使用mysql_fetch_row()函数遍历查询结果。

MYSQL_ROW row;
while ((row = mysql_fetch_row(result)) != NULL)
{
printf("%s %s %s\n", row[0], row[1], row[2]);
}

其中,row为行指针,可以通过数组下标访问列值。mysql_fetch_row()函数会返回每一行的列值,直到返回NULL。

6.最后使用mysql_free_result()函数释放查询结果。

mysql_free_result(result);

完整代码如下:

#include 
#include
int mn(int argc, char const *argv[])
{
MYSQL* mysql = NULL;
mysql = mysql_init(mysql);
if (mysql_real_connect(mysql, "localhost", "root", "password", "test", 0, NULL, 0) == NULL)
{
printf("Connection fled: %s\n", mysql_error(mysql));
}
if (mysql_query(mysql, "SELECT * FROM test_table") != 0)
{
printf("Query fled: %s\n", mysql_error(mysql));
}
MYSQL_RES* result = mysql_store_result(mysql);

MYSQL_ROW row;
while ((row = mysql_fetch_row(result)) != NULL)
{
printf("%s %s %s\n", row[0], row[1], row[2]);
}

mysql_free_result(result);
mysql_close(mysql);
return 0;
}

三、插入数据

使用C语言插入数据大致分为如下步骤:

1.使用mysql_real_connect()函数连接MySQL服务器。

mysql_real_connect(mysql, "localhost", "root", "password", "test", 0, NULL, 0);

2.使用mysql_query()函数发送SQL查询。

mysql_query(mysql, "INSERT INTO test_table (id, name, age) VALUES (1, 'Tom', 18)");

其中,INSERT INTO表示插入数据操作,test_table是表名,id、name、age是列名,1、’Tom’、18是对应列的值。

3.使用mysql_affected_rows()函数获取受影响的行数。

int rows = mysql_affected_rows(mysql);

其中,mysql_affected_rows()函数返回受影响的行数,即插入或更新或删除的行数。

完整代码如下:

#include 
#include
int mn(int argc, char const *argv[])
{
MYSQL* mysql = NULL;
mysql = mysql_init(mysql);
if (mysql_real_connect(mysql, "localhost", "root", "password", "test", 0, NULL, 0) == NULL)
{
printf("Connection fled: %s\n", mysql_error(mysql));
}
if (mysql_query(mysql, "INSERT INTO test_table (id, name, age) VALUES (1, 'Tom', 18)") != 0)
{
printf("Query fled: %s\n", mysql_error(mysql));
}
int rows = mysql_affected_rows(mysql);
printf("Affected rows: %d\n", rows);
mysql_close(mysql);

return 0;
}

四、更新数据和删除数据

更新数据和删除数据的步骤与插入数据类似,只需要更改SQL语句即可。对于更新数据,可使用如下SQL语句:

mysql_query(mysql, "UPDATE test_table SET name = 'Jerry', age = 20 WHERE id = 1");

其中,UPDATE表示更新数据操作,test_table是表名,SET后面是需要更新的列名以及对应的值,WHERE id = 1表示只更新id等于1的行。

对于删除数据,可使用如下SQL语句:

mysql_query(mysql, "DELETE FROM test_table WHERE id = 1");

其中,DELETE FROM表示删除数据操作,test_table是表名,WHERE id = 1表示只删除id等于1的行。

完整代码如下:

#include 
#include
int mn(int argc, char const *argv[])
{
MYSQL* mysql = NULL;
mysql = mysql_init(mysql);
if (mysql_real_connect(mysql, "localhost", "root", "password", "test", 0, NULL, 0) == NULL)
{
printf("Connection fled: %s\n", mysql_error(mysql));
}
mysql_query(mysql, "UPDATE test_table SET name = 'Jerry', age = 20 WHERE id = 1");
int rows = mysql_affected_rows(mysql);
printf("Affected rows: %d\n", rows);

mysql_query(mysql, "DELETE FROM test_table WHERE id = 1");
rows = mysql_affected_rows(mysql);
printf("Affected rows: %d\n", rows);

mysql_close(mysql);

return 0;
}

五、总结

本文介绍了如何用C语言操作MySQL数据库,并提供了示例代码。读者可以根据自己的需要修改代码实现自己的业务逻辑。希望本文对读者有所帮助。


数据运维技术 » 学会用C语言写MySQL数据库语句(c 写mysql 语句)