专栏首页程序手艺人Linux下C语言操作MySQL

Linux下C语言操作MySQL

1. MySQL数据库简介

MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源。MySQL有以下特性:

(1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可移植性。

(2) 支持多线程,利用CPU资源,支持多用户。

(3) 可以处理拥有上千万条记录的大型数据库。

(4)既可以作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为 一个库而嵌入到其他软件中去。

2. MySQL数据库的安装 安装MySQL数据库需要三个软件包:

(1)服务器

(2)客户端

(3) 开发库-如果用C或C语言开发,就得安装开发库。

MySQL-server-5.5.8-1.rhel5.i386.rpm

MySQL-client-5.5.8-1.rhel5.i386.rpm

MySQL-devel-5.5.8-1.rhel5.i386.rpm 在Linux下用rpm -ivh 安装即可。

3. MySQL的相关目录

/usr/bin MySQL客户端程序或脚本

/usr/sbin mysqld服务器相关程序

/var/lib/mysql 日志文件,数据库数据文件存放目录

/usr/share/doc/packages 使用手册,开发文档存放目录

/usr/include/mysql 接口函数库头文件存放目录

/usr/lib/mysql 接口函数动态链接库存放目录

/usr/share/mysql 错误消息和字符集文件存放目录

/usr/share/sql-bench 基本程序存放目录

4. MySQL数据库的基本操作

--查看linux系统下是否装有: cd /etc/init.d/mysqld/

--启动MySQL : /etc/init.d/mysqld  start

--进入MySQL界面:mysql

[ ]中的内容为可选项

--创建数据库

mysql> create database 数据库名称

--创建表

mysql> create table 表名 (列的名字(id)类型(int(4))primary key(定义主键) auto_increment(描述 自增),……,); eg: create table stu(name char(20), num int(4), age int(2),  sex char(1) );

--查看所有数据库

mysql> show databases ;

--使用某个数据库

mysql> use 数据库名称;

--查看所使用数据库下所有的表

mysql> show tables;

--显示表的属性结构

mysql> desc 表名;

--选择表中数据的显示

--* 代表选择所有列 ,

mysql> select * from 表名 where id=?[and name=?] [or name=?]; eg: select *from stu;

mysql> select id,name from 表名order by 某一列的名称 desc(降序,asc为升序) --表中添加数据 mysql> insert into 表名 values(); eg:insert into musictable values('1.wav','/home/2Stage/Project/music');

--删除表中的数据

mysql> delete from table where id=?[or name=? (and name=?)]; eg:delete from stu where name="xiaoming";

--删除表

mysql> drop table;

--删除数据库

mysql> drop database; --退出mysql mysql>quit --创建一个新的用户 mysql>grant select,delete,insert on *.* to user_1@localhost identified by "123";              grant ---权限----on 数据库.数据库中所有表  用户名@ 使用地方(%表示所有地方)identified by 密码 --进入创建的用户 :mysql -u user_1 -p                           : 密码 5. MySQL数据搬家 (1)查看MySQL数据存放位置: ls /var/lib/mysql/ (2)home目录下新建: mkdir /home/data      mv /var/lib/mysql/  /home/data (3)修改配置文件:vim /etc/my.cnf                            第3行:socket=/var/lib/mysql/mysql.sock   改为  socket=新建路径 (4)修改配置文件:vim /etc/rc.d/init.d/mysqld                            第51行:get_mysql_option mysqld datadir "/var/lib/mysql"   改为:get_mysql_option mysqld datadir "新建路径" 6. C语言操作MySQL数据库  代码1:

/********************************************************************************
**
**          数据库操作MySQL
**
**----------FileInfo------------------------------------------------------------- 
** 文件名称:test.c
** 创建日期:2014-10-13
** 修改日期:
** 文件信息:数据库存储信息
            编译: gcc test.c -o test -lmysqlclient -L/usr/lib/mysql
********************************************************************************/
#include
#include
#include
int main()
{
    /*设定一个文件句柄*/
    MYSQL con;
    /*初始化*/
    mysql_init(&con);
    /*链接数据库,参数1:句柄        参数2:主机名(NULL表示本机); 参数3:数据库使用使用名 参数4:数据库登录密码 
                  参数5:数据库名字  参数6:数据库端口               参数7:链接类型         参数8:通常为0*/
    MYSQL *ret = mysql_real_connect(&con, NULL,"root","","mm",0,NULL,0);
    if(NULL == ret){
        perror("connect error!\n");
        exit(1);
    }
    char *ps = "select *from stu";
    /*执行操作命令*/
    int rsql = mysql_query(&con,ps);
    if(rsql < 0){
        perror("query error!\n");
        exit(1);
    }
    MYSQL_RES *res;
    /*存储检索信息*/
    res = mysql_store_result(&con);
    MYSQL_ROW row;
        /*char **argv*/
    /*检索一行的内容*/
    while(row = mysql_fetch_row(res)){
        printf("%s \t",row[0]);
        printf("%s \t",row[1]);
        printf("%s \t",row[2]);
        printf("%s \t",row[3]);
        printf("\n");
    }
    /*释放结构体空间*/
    mysql_free_result(res);
    /*关闭句柄所指数据库*/
    mysql_close(&con);
    return 0;
}

编译:gcc test.c -o test -lmysqlclient -L/usr/lib/mysql    或:gcc test.c -o test  $(mysql_config --cflags)  $(mysql_config  --libs)

解释:
(1) mysql_config --cflags 寻找mysql编译相关的头文件等信息。
(2) mysql_config --libs   寻找mysql编译所需要的库函数。
(3) -L/usr/lib 指出静态库寻找的路径。在这里也可以不写,因为系统会去默认的/lib,/usr/lib去寻找库函数。如果libmysqlclient.a在/usr/lib/mysql下,那么-L/usr/lib/mysql 这个目录。
(4)非标准的库函数,链接时用-lmysqlclient.原库名为libmysqlclient.a去掉lib和.a。
(5) -I是包含头文件等信息,及include .
(6) 动态链接库的寻找顺序:
a. LD_LIBRARY_PATH设置的目录下.
b. /etc/ld.so.conf 加到这个文件中的目录。
c. 默认的 /usr/lib,/lib目录下。
(7)头文件的寻找顺序
a. -I所指定的目录中去寻找 
b.gcc的环境变量指定的目录
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH
c. /usr/include /usr/local/include 等目录下寻找。
(8)静态库的寻找顺序
a. -L所指定的静态库寻找路径
b.gcc环境变量LIBRARY_PATH
c. /lib ,/usr/lib,/usr/local/lib

代码2:

/********************************************************************************
**
**          数据库操作之MySQL
**
**----------FileInfo------------------------------------------------------------- 
** 文件名称:test.c
** 修改日期:
** 文件信息:数据库里存储数据
********************************************************************************/
#include
#include
#include
int main()
{
    /*设定一个文件句柄*/
    MYSQL con;
    /*初始化*/
    mysql_init(&con);
    /*链接数据库,参数1:句柄        参数2:主机名(NULL表示本机); 参数3:数据库使用使用名 参数4:数据库登录密码 
                  参数5:数据库名字  参数6:数据库端口               参数7:链接类型         参数8:通常为0*/
    MYSQL *ret = mysql_real_connect(&con, NULL,"root","","mm",0,NULL,0);
    if(NULL == ret){
        perror("connect error!\n");
        exit(1);
    }

    char *ps = "insert into stu value('xiao1',123,23,'n')";
    /*执行操作命令*/
    int rsql = mysql_query(&con,ps);
    if(rsql < 0){
        perror("query error!\n");
        exit(1);
    }
}
~                                          

参考文章:点击打开链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Linux驱动炼成记] 01-用户空间操作IIC

    调试IIC过程中,需要准备示波器或逻辑分析仪,需要通过示波器查看波形确定硬件连接是否正确,不然出现问题,软件再怎么调试,都是枉然.

    程序手艺人
  • Microsoft Visual Studio 2010编译生成总出现exe写入错误

    之前都是在Linux系统下运用GCC编译器调试程序,今天安装VS2010调试程序,感觉功能还是挺强大的,调试程序时,突然——发现用VS2010在编译正确后,...

    程序手艺人
  • mbed TLS 简明教程(一)

    程序手艺人
  • docker安装mysql及navicat远程连接

    华创信息技术
  • macOS 安装 mysql

    打开下载页面 https://dev.mysql.com/downloads/mysql/5.7.html ,下载镜像安装文件。

    我是一条小青蛇
  • Mysql指令select,update,insert,drop,truncate+MySQL数据库备份恢复

    一、select: 1.1 选择db1中mysql库和user表: mysql> use db1 Database changed mysql> select ...

    老七Linux
  • [docker]安装Mysql

    贰叁壹小窝
  • MySQL 复制全解析 Part 4 使用备库搭建MySQL复制

    MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制

    bsbforever
  • Linux 下MySQL源码安装完整版

        在Linux中安装MySQL,通常为RPM与源码方式安装。对于生产环境而言,由于需要自定义诸如安装路径、数据文件位置、字符集以及支持的存储引擎等多以源码...

    Leshami
  • Linux基础(day55)

    13.4 mysql用户管理 mysql用户管理目录概要 grant all on . to 'user1' identified by 'passwd'; g...

    运维小白

扫码关注云+社区

领取腾讯云代金券