学会用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数据库,并提供了示例代码。读者可以根据自己的需要修改代码实现自己的业务逻辑。希望本文对读者有所帮助。