ubuntu环境下mysql的安装配置和编程操作

来源:互联网 发布:服装设计电脑绘图软件 编辑:程序博客网 时间:2024/05/14 11:03

关于mysql的安装和配置我就不多说了,这边有一篇流程非常详细
http://blog.csdn.net/q623702748/article/details/51724124

接下来我们怎么在程序中操作数据库呢,之前通常我都是用QT的库,
但是考虑到我们是做服务器开发的话,仅仅因为操作数据库把笨重的qt安装上绝对是不合适的!
之前听说c语言本身就带有操作mysql的接口,但是我在程序中加上#include <mysql/mysql.h>
但是编译时报错 :
fatal error:mysql.h: No such file or directory
后来查资料才知道出现这个错误的原因是因为体系没有安装mysql开发库!
这时候我才知道c语言操作mysql需要安装一个独立的开发库!

执行下面的指令安装:
sudo apt-get install libmysqlclient-dev
编译时需要链接 -lmysqlclient

程序中调用了mysql的函数,链接动态编译:
gcc -o program program.c -L/usr/lib/mysql -lmysqlclient

makefile:
mydb:main.cpp
    g++ -o mydb main.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql

下面是main.cpp
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/my_global.h>#include <mysql/mysql.h>#define MAX_COLUMN_LEN 32intfunc(){    //分配或初始化一个mysql对象,该对象mysql_real_connect()函数链接数据库时需要使用    MYSQL *con = mysql_init(NULL);    if (NULL == con)    {        fprintf(stderr, "%s\n", mysql_error(con));        return -1;    }    //建立一个指向数据库的链接,我们需要指定链接句柄,主机名,数据库账号和用户密码    //最后四个参数是数据库名,端口号,unix套接字和客户端标记,我们需要超级用户权限来创建新的数据库    if (NULL == mysql_real_connect(con, "localhost", "root", "123456", NULL, 0, NULL, 0))    {        fprintf(stderr, "%s\n", mysql_error(con));        mysql_close(con);        return -1;    }    //此函数执行一个SQL语句,语句“CREATE DATABASE mydb”用于创建一个新的数据库mydb;    if (mysql_query(con, "CREATE DATABASE huangtaodb"))    {        fprintf(stderr, "%s\n", mysql_error(con));        mysql_close(con);        return -1;    }        //获取服务器信息和主机信息    fprintf(stdout, "%s\n", mysql_get_server_info(con));    fprintf(stdout, "%s\n", mysql_get_host_info(con));    //关闭数据库链接。    mysql_close(con);}int main(int argc, char * argv[]){        //显示MYSQL客户端版本    printf("MYSQL client version: %s\n", mysql_get_client_info());    func();    return 0;}

下面我们创建一个用户
mysql -uroot -p123456
CREATE USER 'bjqe'@'localhost' IDENTIFIED BY '123456'
将mazhaodb这个数据库的所有权限授予bjqe用户
GRANT ALL ON mazhaodb.* TO 'bjqe'@'localhost' IDENTIFIED BY "123456" WITH GRANT OPTION;;
通过bjqe这个用户对mazhaodb这个数据库进行操作!
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/my_global.h>#include <mysql/mysql.h>#define MAX_COLUMN_LEN 32intfinish_with_error(MYSQL *con){    fprintf(stderr, "%s\n", mysql_error(con));    mysql_close(con);    return -1;}intfunc(){    MYSQL *con = mysql_init(NULL);    if(NULL == con)    {        fprintf(stderr, "%s\n", mysql_error(con));        return -1;    }    if(NULL == mysql_real_connect(con, "localhost", "bjqe", "123456", "mazhaodb", 0, NULL, 0))    {        finish_with_error(con);    }    if(mysql_query(con, "DROP TABLE IF EXISTS Phones;"))    {        finish_with_error(con);    }    if(mysql_query(con, "CREATE TABLE Phones(Id INT,Name TEXT,Price INT);"))    {        finish_with_error(con);    }    if(mysql_query(con, "INSERT INTO Phones VALUES(1, '三星GALAXY', 5199);"))    {        finish_with_error(con);    }    mysql_close(con);    return 0;}int main(int argc, char * argv[]){        //显示MYSQL客户端版本    printf("MYSQL client version: %s\n", mysql_get_client_info());    func();    return 0;}


1 0