一.连接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. TCP/IP之TCP交互数据流、成块数据流

    建立在TCP协议上的网络协议有telnet,ssh,ftp,http等等.这些协议根据数据吞吐量来分成两大类: (1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的 ...

  2. mysql简单使用增删改查

    修改配置文件 在my.in配置文件 找到client 指的是mysql客户端 port3306 default -charachter-set=utf-8 default -charachter-se ...

  3. line

    小君童靴说头儿给了他一个project,实现给出屏幕上任意两个点,求出这两个点之间直线上的所有的点.觉得这个很好玩,就自己也写了一点code /* date : 2014/10/21 version ...

  4. ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

    一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并 ...

  5. Citrix XenApp6.5 另类发布文档

    快捷方式.文档发布 第一种方式: 1.    创建快捷方式 2.    创建批处理文件(例如:lnk.bat),并输入以下内容: Start c:\users\public\desktop\adobe ...

  6. 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    设计模式 ( 十六 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来 ...

  7. freemarker序列的拆分

    freemarker序列的拆分 1.简易说明 序列的拆分能够是数组.字符串.布尔值等等 2.实现源代码 <#--freemarker序列的拆分--> ${"hudjfkskhd你 ...

  8. c++,operator=

    operator=为什么值得注意? 从语法上讲,下面的程序可以编译通过,我在另一篇笔记示例里面也这样用了. class A1 { public: int operator=(int a)//参数是in ...

  9. BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )

    果然写得短就跑得慢... 直接用set就行了(你要写棵平衡树也可以).没有包含的话, 假如L(i) <= L(j), 那么R[i] <= R[j]. 所以从小到大扫, 每次查找左端点小于当 ...

  10. django局域网建一个网站

    之前总是运行的python manage.py runserver,用默认的在本机访问的127.0.0.1:8000,如果跟几个同学一起去开发一个网站来玩玩的话,可以这样: python manage ...