Linux下实现Mysql开发环境的部署和数据库程序的实现

SQL本身并不复杂,实际上我感觉部署mysql的环境才是最复杂的。

这里采用了centos6.5系统来部署环境。

 

首先需要安装数据库和数据库开发环境,以及编译环境

 

yum install MySQL MySQL-server MySQL-devel gcc gcc-c++ -y

 

然后运行数据库

service mysqld start

如果你用的是centos7以上的系统,mysql就被mariadb取代用以下命令执行

systemctl start mariadb.service 

现在直接在控制台输入mysql即可进入数据库系统

这里用数据库自带的test来进行数据的导入,如果不导入,那么就直接创建一个数据库,可尝试建立一个简单的数据库,使用以下命令

1 create database MySQL 
2 (Sno char(20) primary key,
3     Sname char(20) NOT NULL,
4     sage smallint,
5     sGdener char(2) check(sGender in'M','F')
6 );
View Code

好,这就建立了一个简单的数据库,现在导入我们对数据库的简单程序,注意这里的程序和刚才新建立的表使用的码是不一样的。

额外注意的是,这里使用了sprintf实现了对sql变量的查询。

令人头疼的是,在编译的过程中始终提示找不到数据库头文件,这里采用这样的编译命令来执行

g++ sql2.cpp `mysql_config --cflags --libs` -o sql2

  下面是程序的主体部分

#include <cstdio>
#include <mysql.h>
#include<iostream>
#include<string.h>
using namespace std;


//本程序在centos6.5中测试通过,如需测试,把2000万数据数据导入名为test的数据库中后尝试

//这是编译命令,直接复制粘贴即可
//g++ sql2.cpp `mysql_config --cflags --libs` -o sql2

//运行前先要安装mysql-devel库

//create database test (name vchar(200),numb int(20));
int main()
{
    MYSQL conn;
    int res;
    char sql_insert[200]; 
    int *name;
    int numb;
    MYSQL_RES *res_ptr;
    MYSQL_ROW result_row;
    MYSQL_FIELD *field;
    int row;
    int column;
    int i,j;
    string name;
    //cin >>name;
    cin>>numb;
    cin>>name;
    sprintf(sql_insert, "SELECT distinct *  FROM cdsgus where Ctfid=%d Name='%s' ", numb,name);
    mysql_init(&conn);
    if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS)) 
    {
        printf("connect success!\n");
        //mysql_query(&conn,"insert into test values('user','123456')");
        res=mysql_query(&conn, sql_insert);
        if(res)
            return(0);
        else {
            res_ptr = mysql_store_result(&conn);
                if(res_ptr){
                    column = mysql_num_fields(res_ptr);
                    row = mysql_num_rows(res_ptr) + 1;
                    printf("there is %lu line \n", row);
                    for (i = 0; field = mysql_fetch_field(res_ptr); i++)
                        printf("%s\t", field->name);
                    printf("\n");
                }
             for (i = 1; i < row; i++)
            {
            result_row = mysql_fetch_row(res_ptr);//这里res_ptr实际上相当于游标
            for (j = 0; j < column; j++)
            printf("%s\t", result_row[j]);
            printf("\n");  
            }  
        }
    }
    mysql_close(&conn);     
    return 0;
}

 

posted @ 2016-12-04 23:22  Madao东治  阅读(1525)  评论(0编辑  收藏  举报