一.连接MySQL数据库

一个最简单的程序示例:

#include <stdio.h>
#include "mysql.h" int main()
{
MYSQL mysql;
int t, r;
mysql_init(&mysql); if (!mysql_real_connect(&mysql, "localhost", "root", "supersmd", "student", 0, NULL, 0))
printf("Error connecting to database: %s\n", mysql_error(&mysql));
else
printf("Connected MySQL successfully!\n"); mysql_close(&mysql); return 0;
}

它的编译命令为:gcc -o connect connect.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient

如果报出链接错误,没有找到mysqlclient 库,检查一下是否安装了,没有的话可以:

sudo apt-get install libMySQLclient15-dev

步骤:

1.初始化MySQL的连接句柄

在连接MySQL数据库之前,首先调用mysql_init()函数以初始化一个连接句柄。若建立成功,则返回一个新创建的链接句柄的指针;否则返回NULL

mysql_init()函数的原型如下:

MYSQL *mysql_init(MYSQL *);

2.实际连接数据库

在调用mysql_init()函数初始化MySQL句柄以后,调用mysql_real_connect()函数实际进行与MySQL服务器的链接。

mysql_real_connect()函数原型如下:

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

其中的参数含义:

mysql 是MYSQL连接句柄的指针。

host 既可以是主机名也可以是IP地址。如果连接的是本地机器,则其值为“localhost”

user 指定登录MySQL服务器的用户名

passwd 指定用户user的密码

db 是数据库名称

port 应该为0,不为0则将其值作为TCP/IP连接的端口号

NAME_socket 默认为NULL,如不为NULL,则该字符串描述了应使用的套接字或命名管道

client_flag 通常为0

二. 数据查询

#include <stdio.h>
#include <string.h>
#include "mysql.h" int main()
{
MYSQL mysql;
MYSQL_RES *res; //该结构代表返回行的查询结果(SELECT,SHOW,DESCRIBE,EXPLAIN)
MYSQL_ROW row; //这是一行数据的“类型安全”表示,它指向含有一行数据的字符串数组。行号可以通过mysql_fetch_row()函数获得
char *query;
int flag, t; mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "supersmd", "student", 0, NULL, 0)) //若连接数据库失败
{
printf("Failed to connect to MySQL!\n");
return 0;
}
else
printf("Connected MySQL successfully!\n"); query = "select * from student"; //要查询的SQL语句
flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
if (flag) //非0查询失败
{
printf("query failed!\n");
return 0;
}
else
printf("[%s] made...\n", query); res = mysql_store_result(&mysql); //保存查询结果
while (row = mysql_fetch_row(res))
{
for (t = 0; t < mysql_num_fields(res); t++)
printf("%s ", row[t]);
printf("\n");
} mysql_close(&mysql);
return 0;
}

函数说明:

(1) int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length);

执行指定为带计数的字符串query的SQL查询。查询成功返回0;

(2) mysql_real_query()的辅助函数及其用法

函数原型 用法
mysql_store_result() 将查询的全部结果读取到客户端。查询成功后必须调用mysql_store_result()
mysql_num_field() 返回结果集中的行数
mysql_fetch_row() 检索结果集的下一行

三.添加数据

#include <stdio.h>
#include <string.h>
#include "mysql.h" int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query[2];
int i, flag, r; mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "supersmd", "student", 0, NULL, 0))
{
printf("Failed to connect to MySQL!\n");
return 0;
}
else
printf("Connected MySQL successfully!\n");
query[0] = "insert into student (sno, sname)values(1010,'kobe')";
query[1] = "insert into student (sno, sname)values(1020,'TMC')"; for (i = 0; i < 2; i++)
{
if (mysql_real_query(&mysql, query[i], (unsigned int)strlen(query[i])))
{
printf("insert data %d failed!\n", i+1);
return 0;
}
}
mysql_close(&mysql);
return 0;
}

四.删除数据

#include <stdio.h>
#include <string.h>
#include "mysql.h" int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query;
int i, flag, r; mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "supersmd", "student", 0, NULL, 0))
{
printf("Failed to connect to MySQL!\n");
return 0;
}
else
printf("Connected MySQL successfully!\n");
query = "delete from student where sno = '1001'"; if (!mysql_real_query(&mysql, query, (unsigned int)strlen(query)))
{
printf("delete data successfully!\n");
}
mysql_close(&mysql);
return 0;
}

Linux下使用Mysql的更多相关文章

  1. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...

  2. LR通过snmp监控linux下的mysql

    LR通过snmp监控linux下的mysql 在linux底下安装配置snmp: 1.使用系统盘安装rpm包(这种方式最好) 2.在www.net-snmp.org处下载net-snmp安装(安装后有 ...

  3. 在Linux下给mysql创建用户并分配权限及问题解决方案

    在linux下安装mysql请参考在linux系统中安装mysql服务器详细步骤 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql ...

  4. Linux下查看mysql、apache是否安装,安装,卸载等操作

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  5. Linux下PHP+MySQL+CoreSeek中文检索引擎配置

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  6. Linux下登陆mysql服务器不需要输入账号密码信息

    linux下登录mysql服务器一般都是在命令行手动输入链接信息 [root@localhost ~]# mysql -hlocalhost -uroot -p11111 而在mysql 5.6之后版 ...

  7. linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql

    Linux 默认情况下,数据库是区分大小写的:因此,要将mysql设置成不区分大小写 在my.cof 设置 lower_case_table_names=1(1忽略大小写,0区分大小写) 检查方式:在 ...

  8. Linux 下卸载MySQL 5

    对于在Linux下通过rpm方式的mysql,我们能够通过移除这些rpm包以及删除项目的文件夹来达到卸载的目的.本文演示了在SUSE Linux 10下下载MySQL 5.5.37.详细见下文. 1. ...

  9. Linux 下一个 Mysql error 2002 错误解决

    Linux 下一个 Mysql error 2002 错误解决     首先查看 /etc/rc.d/init.d/mysqld status 查看mysql它已开始.     假设启动的的话,先将数 ...

  10. Linux下查看MySQL的安装路径

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

随机推荐

  1. BZOJ 1800 fly-飞行棋

           这道题其实考察的就是从其中能找到几条直径,因为这次数据范围比较小,所以只需设一个二维数组,记录一下每个点及每个点从零开始的位置,最后定一个变量记录周长,最后用个循环搜一下位置小于周长一半 ...

  2. C语言--union关键字(转载)

    union维护足够的空间来放置多个数据成员中的“一种”,而不是为每一个数据成员配置空间.在union中,所有的数据成员共用一个空间,同一时间只能存储其中一个数据成员,所有的数据成员具有相同的起始地址.

  3. ZOJ 3778 Talented Chef 模拟 [ 祝愿明天省赛一帆风顺, ZJSU_Bloom WILL WIN : )

    这题的意思是给你 n 道菜,第 i 道菜需要 Ai 步才能完成 每次你能对 m 道菜分别完成一步,请问最少需要几次? 这题暴力写肯定是不行的,去年省赛的时候就是没写出来这题,今天再把思路理一理吧. 首 ...

  4. 函数嵌套 lisp表达式求值

    问题 D: lisp表达式求值 时间限制: 1 Sec  内存限制: 128 MB提交: 105  解决: 43[提交][状态][讨论版] 题目描述 lisp是一种非常古老的计算机语言,是由约翰·麦卡 ...

  5. Winsock在Windows下的编程教程(C语言)(图文并茂,超长教程)

    https://www.0xaa55.com/forum.php?mod=viewthread&tid=378&extra=page%3D2

  6. android如何添加桌面图标和卸载程序后自动删除图标

    android如何添加桌面图标和卸载程序后自动删除桌面图标,这是一个应用的安装与卸载过程对桌面图标的操作,下面与大家分享下具体是如何实现的,感兴趣的朋友可以参考下哈 1:创建图标如下 Intent i ...

  7. java 访问 mysql 数据库的字符集设置

    mysql是在linux下,java代码通过jdbc访问总是中文乱码.做过如下尝试: 1)修改 mysql的 my.cnf文件,设置 default-character-set等参数 2) 利用alt ...

  8. maven仓库--私服(Nexus的配置使用)

    maven--私服的搭建(Nexus的使用)和注意的问题 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视.Nexus是常用的私用Maven服务器,一 ...

  9. java之Thread.sleep(long)与object.wait()/object.wait(long)的区别(转)

    一.Thread.sleep(long)与object.wait()/object.wait(long)的区别sleep(long)与wait()/wait(long)行为上有些类似,主要区别如下:1 ...

  10. CF#213DIV2:B The Fibonacci Segment

    You have array a1, a2, ..., an. Segment [l, r] (1 ≤ l ≤ r ≤ n) is good if ai = ai - 1 + ai - 2, for ...