前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下C语言操作MySQL

Linux下C语言操作MySQL

作者头像
程序手艺人
发布2019-02-21 15:34:07
5.8K0
发布2019-02-21 15:34:07
举报
文章被收录于专栏:程序手艺人程序手艺人

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:

代码语言:javascript
复制
/********************************************************************************
**
**          数据库操作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)

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

代码2:

代码语言:javascript
复制
/********************************************************************************
**
**          数据库操作之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);
    }
}
~                                          

参考文章:点击打开链接

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档