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 );
好,这就建立了一个简单的数据库,现在导入我们对数据库的简单程序,注意这里的程序和刚才新建立的表使用的码是不一样的。
额外注意的是,这里使用了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; }