• Linux Programming之MySQL


    实验环境:Ubuntu13.04

    在此之前有过一段使用MySQL数据库的经历,在Windows平台下使用GUI(当时是使用HeidiSQL和Workbench来管理数据库),并且有过使用Python中的mysqldb模块操作MySQL数据库。最近,在深入的学习Linux操作系统的管理,从鸟叔的2本书到Linux Shell编程,再到Linux下的C编程,沿途一路走来,学到不少新知识。这里带给大家Linux下使用C语言操作数据库的方法,我将从MySQL环境的搭建,MySQL命令的使用到使用C接口来操作MySQL等过程详细的介绍在Linux下管理MySQL数据库的方法,有需要的猿们可以一起学习。

    1. MySQL的安装与配置:

    在Ubuntu下安装MySQL方法很简单,使用如下命令:

    sudo apt-get install mysql-server

    安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的时候自行设置,免得后面设置麻烦。安装结束之后,系统会启动mysql服务,可以使用命令去查看来验证mysql服务是否已经安装成功:

    ps -el | grep mysql

    如果mysql服务没有正常的运行,可以使用下面指令对mysql服务进行重启:

    sudo service mysql restart

    喜欢使用Workbench界面的,还需要安装Workbench:

    sudo apt-get install mysql-workbench

    Workbench的启动使用如下命令:

    mysql-workbench --log-level=debug3 --verbose

    2. MySQL命令行:

    我们使用root去登录MySQL,然后做相关的操作:

    mysql -u root -p

    在此,系统会提示输入密码,只需要输入之前设置的MySQL密码即可,然后程序会进入mysql命令行模式下,假设我们需要查看user信息,我们使用如下命令:

    use mysql
    SELECT host, user, password FROM user;

    MySQL会返回所有host,user和password等信息。其他比较复杂的操作,诸如添加数据库,添加表等和普通的数据操作命令一致,后面会以一个实例来说明。让我们赶快进入Linux下C操作MySQL的实践吧!

    3. 使用C语言管理MySQL数据库:

    首先,我们需要安装在Linux下操作MySQL多依赖的库,安装命令如下:

    sudo apt-get install libmysqlclient-dev

    安装了这个之后,我们编程所需要的头文件,库文件等就齐全了,让我们开始C编程之旅吧!

    首先,让我们准备一个我们用来折腾的空间,也就是准备一个折腾专属账户,一个折腾专属数据库和数据表等:

    #添加账户
    GRANT ALL ON *.* TO rick@localhost IDENTIFIED BY 'secret'
    q
    #使用新创建的rick账户登录
    mysql -u rick -p
    #创建数据库
    CREATE DATABASE foo;

    然后,我们使用一个sql文件插入数据表和测试数据:

    --
    -- Create the table children
    --
    CREATE TABLE children (
        childno int(11) NOT NULL auto_increment,
        fname varchar(30),
        age int(11),
        PRIMARY KEY (childno)
    );
    --
    -- Populate the table 'children'
    --
    INSERT INTO children(childno, fname, age) VALUES (1, 'Jenny', 21);
    INSERT INTO children(childno, fname, age) VALUES (2, 'Andrew', 17);
    INSERT INTO children(childno, fname, age) VALUES (3, 'Gavin', 8);
    INSERT INTO children(childno, fname, age) VALUES (4, 'Duncan', 6);
    INSERT INTO children(childno, fname, age) VALUES (5, 'Emma', 4);
    INSERT INTO children(childno, fname, age) VALUES (6, 'Alex', 15);
    INSERT INTO children(childno, fname, age) VALUES (7, 'Adrian', 9);

    将上述sql语句存为create_children.sql,然后使用下列命令导入MySQL数据库foo:

    mysql -u rick --password=secret foo
    . create_children.sql

    好了,写个demo进行测试吧:

    #include <stdlib.h>
    #include <stdio.h>
    
    #include "mysql.h"
    
    int main(int argc, char *argv[]) {
        MYSQL my_connection;
        int res;
    
        mysql_init(&my_connection);
        if (mysql_real_connect(&my_connection, "localhost",
                    "rick", "secret", "foo", 0, NULL, 0)) {
            printf("Connection success
    ");
            res = mysql_query(&my_connection, "INSERT INTO children(fname, age) VALUES('Ann', 3)");
            if (!res) {
                printf("Inserted %lu rows
    ",
                        (unsigned long)mysql_affected_rows(&my_connection));
            } else {
                fprintf(stderr, "Insert error %d: %s
    ", mysql_errno(&my_connection), mysql_error(&my_connection));
            }
    
            mysql_close(&my_connection);
        } else {
            fprintf(stderr, "Connection failed
    ");
            if (mysql_error(&my_connection)) {
                fprintf(stderr, "Connection error %d: %s
    ", mysql_errno(&my_connection), mysql_error(&my_connection));
            }
        }
        return EXIT_SUCCESS;
    }

    将上述代码保存为demo.c。上述代码中,我们需要包含mysql.h头文件来使用mysql提供的API对MySQL进行操作。程序写好了,编译过程需要加入需要的链接信息:

    gcc -I/usr/include/mysql demo.c -L/usr/lib/mysql -lmysqlclient -o demo

    好了,程序成功编译,运行一下试试吧:

    ./demo
    
    #结果如下
    Connection success
    Inserted 1 rows

    感谢阅读,希望能帮到大家(Published by Windows Live Writer)。

  • 相关阅读:
    Matlab随笔之三维图形绘制
    Matlab随笔之模拟退火算法
    Matlab随笔之矩阵入门知识
    Matlab随笔之求解线性方程
    Matlab随笔之分段线性函数化为线性规划
    Matlab随笔之指派问题的整数规划
    Matlab随笔之线性规划
    Android单位转换 (px、dp、sp之间的转换工具类)
    Android禁止输入表情符号
    设计模式之策略模式
  • 原文地址:https://www.cnblogs.com/berlin-sun/p/mysqlinlinux.html
Copyright © 2020-2023  润新知