一.连接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. 打印NSLog分类 Foundation+Log.m

    #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @implementation UIView(Log) + ...

  2. ubuntu中在线升级python

    sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7 sudo apt-get update sudo apt-get upgrade 笔记

  3. Android:ListViewAdapter

    MainActivity: package com.wyl.listview; import java.util.ArrayList; import java.util.HashMap; import ...

  4. PHP5新语法学习

    Final标记方法,使其不能被子类重载:Final标记类,使其不能被继承. 连续引用返回的对象$obj->method()->method2(); __autoload()使用未定义的类的 ...

  5. [转]Mysql自动备份并保存近15天记录脚本

    本脚本主要现实在CentOS中实现对MySQL数据库的备份和保留最近十五天的备份文件.避免太多无用陈旧的备份占用空间. #!/bin/bash id='root' #用户名 pwd='123123' ...

  6. Week2(9月16日):动手做个简单的例子

    Part I:提问  =========================== 1.什么是ASP.NET MVC? 2.MVC的英文? 3.什么是模型? 4.什么是控制器? 5.什么是视图? 6.ASP ...

  7. Microsoft Visual Studio 发展历史

    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具. ...

  8. pojg487-3279电话号码转换(字符映射)

    http://poj.grids.cn/practice/2974 注意输入中连字符可以任意添加和删除. 描述企业喜欢用容易被记住的电话号码.让电话号码容易被记住的一个办法是将它写成一个容易记住的单词 ...

  9. phpmailer发送邮件,可以带附件

    先从网上下载phpmailer压缩包 将解压的文件导入到你的项目中 实例 require_once ('PHPMailer/class.phpmailer.php'); //引入phpmailer文件 ...

  10. 基于visual Studio2013解决C语言竞赛题之0518回文数

     题目