一.连接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. Chapter 13 建造者模式

    建造者模式又叫生成器模式:将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 代码: package xiao; import java.util. ...

  2. 限制QLineEdit的数值输入范围(一共4种限制器:QDoubleValidator, QIntValidator, QRegExpValidator, 和QRegularExpressionValidator)

    在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360].Qt提供了QIntValidator和Q ...

  3. VM添加e1000e驱动网卡

    关闭虚拟机 打开VMware 虚拟机配置 (.vmx),如

  4. 基于visual Studio2013解决算法导论之029二叉搜索树

     题目 二叉搜索树 解决代码及点评 #include <stdio.h> #include <malloc.h> #include <stdlib.h> ty ...

  5. 用命令行方式关闭linux防火墙

    #/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #/sbin/iptables -I INPUT -p tcp --dport 22 -j A ...

  6. 同步内核缓冲区 sync、fsync和fdatasync函数

    同步内核缓冲区 1.缓冲区简单介绍 人生三大错觉之中的一个:在调用函数write()时,我们觉得该函数一旦返回,数据便已经写到了文件里.可是这样的概念仅仅是宏观上的.实际上.操作系统实现某些文件I/O ...

  7. 蓝牙Profile的概念和常见种类

    蓝牙Profile Bluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范.为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规 ...

  8. RadioButtonList控件

    在这里只写,绑定数据库数据的RadioButtonList控件: 一: 首先,先在数据库中建立一张表: 1 CREATE TABLE KK 2 ( 3 id INT, 4 [name] VARCHAR ...

  9. 点击datalist中Button按钮出现“回发或回调参数无效......”

        遇到问题: 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page ...

  10. 面向对象(类,实例变量,方法定义,方法重载,构造方法,this,string类)

    面向对象 类是由属性和方法组成 类是所有创建对象的模板 实例变量有默认值 实例变量至少在本类范围中有效 实例变量与局部变量冲突时,局部变量优先 类中方法定义类似于函数定义 修饰符 返回值类型 方法名( ...