zoukankan      html  css  js  c++  java
  • 连接数据库

    #include<windows.h>
    #include<iostream>
    #include<iomanip>
    #include<stdlib.h>
    #include<mysql.h>
    #pragma comment(lib,"libmysql.lib")//连接MysQL需要的库  
    using namespace std;
    char user[]="root";// 用户名
    char password[]="016457t"; //密码
    char host[]="localhost"; //要连接的主机
    char db[]="student";   //要连接的数据库
    char StudentId[10];  //学号
    char StudentName[10]; //姓名
    char query[500];     //查询语句
    int MathGrade;        //数学成绩
    int EngGrade;     //英语成绩
    int  ComputerGrade; //计算机成绩
    int port=3306;    //端口
    MYSQL myCont;//句柄
    MYSQL_RES *result;//理解为一个二维表
    MYSQL_ROW sql_row;//以行为单位
    MYSQL_FIELD *fd;//域,以列为宽度
    char column[32][32];
    int res;
    void Connect()   //连接MySQL
    {
    	mysql_init(&myCont);
       if(mysql_real_connect(&myCont,host,user,password,db,port,NULL,0))
    	{
    		cout<<setw(30)<<""<<left<<setw(50)<<"连接成功"<<endl;
    		
    	}
    	else
    	{
    		cout<<setw(30)<<""<<left<<setw(50)<<"连接失败"<<endl;
    	}
    }
    void SetCharacter()  //设置字符
    {
    	mysql_query(&myCont,"SET NAMES GBK");
    }
    void out(int ress)          //输出select获得的表的内容
    {
    	if(!ress)
    		{
    			result=mysql_store_result(&myCont);
    			if(result)//判断二维表是否为空
    			{
    				int i,j;
    				for(i=0;fd=mysql_fetch_field(result);i++)//获取数据表第一行的各个字段名称
    				{
    					strcpy(column[i],fd->name);
    				}
    				j=mysql_num_fields(result);
    				for(int i=0;i<j;i++)
    				{
    					cout<<left<<setw(15)<<column[i];//输出数据表第一行的字段名称
    				}
    				cout<<'
    ';
    				while(sql_row=mysql_fetch_row(result))//循环指向数据表的每行
    				{
    					for(int i=0;i<j;i++)
    					{
    						cout<<left<<setw(15)<<sql_row[i]<<'	';//输出每行的内容
    					}
    					cout<<'
    ';
    				}
    			}
    		}
    		else
    		{
    			cout<<"运行失败"<<endl;
    		}
    }
    void Add()     //插入学生成绩
    {
    	cout<<"请按照 学号、姓名、数学、英语、计算机的顺序输入学生信息"<<endl;
    	cin>>StudentId>>StudentName>>MathGrade>>EngGrade>>ComputerGrade;
    	sprintf(query,"insert into xs_cj values('%s','%s','%u', '%u', '%u');",StudentId,StudentName,MathGrade,EngGrade,ComputerGrade);
    	if(!mysql_query(&myCont,query))
    	{
    		cout<<"添加成功"<<endl;
    	}
    	else
    	{
    		cout<<"运行失败"<<endl;
    	}
    }
    void order()  //排序
    {
    	cout<<"(1) 数学成绩排序"<<endl;
    	cout<<"(2) 英语成绩排序"<<endl;
    	cout<<"(3) 计算机成绩排序"<<endl;
    	int num;
    	cin>>num;
    	switch(num)
    	{
    	case 1:
    		res=mysql_query(&myCont,"select *from xs_cj order by 数学 desc");        //按数学成绩排降序
    		out(res);
    		break;
    	case 2:
    		res=mysql_query(&myCont,"select *from xs_cj order by 英语 desc");       //按英语成绩排降序
    		out(res);
    		break;
    	default:
    		res=mysql_query(&myCont,"select *from xs_cj order by 计算机 desc");      //按计算机成绩排降序
    		out(res);
    	}
    }
    void Ave()
    {
    	//求每个学生的平均成绩
    	res=mysql_query(&myCont,"select  学号,姓名,(数学+英语+计算机)/3 as 平均成绩  from xs_cj order by 平均成绩 desc");
    	out(res);
    }
    void Divid()
    {
    	res=mysql_query(&myCont,"select avg(数学) as 数学平均成绩,avg(英语) as 英语平均成绩,avg(计算机) as 计算机平均成绩 from xs_cj");
    	out(res);         //选出各科平均成绩
    	res=mysql_query(&myCont,"select max(数学) as 数学最高分,max(英语) as 英语最高分,max(计算机) as 计算机最高分 from xs_cj");
    	out(res);        //选出各科最高分
    	//选出数学各分数段人数
    	res=mysql_query(&myCont,"select
    		                case
    						when 数学<60 then '不及格'
    						when 数学>=60 and 数学<70 then '60—70分'
    						when 数学>=70 and 数学<80 then '70—80分'
    						when 数学>=80 and 数学<90 then '80—90分'
    						else '90分以上'
    						end as 数学各分数段 ,count(*) as 人数 from xs_cj group by 数学各分数段");
    	out(res);
    	//选出英语各分数段人数
        res=mysql_query(&myCont,"select
    		                case
    						when 英语<60 then '不及格'
    						when 英语>=60 and 英语<70 then '60—70分'
    						when 英语>=70 and 英语<80 then '70—80分'
    						when 英语>=80 and 英语<90 then '80—90分'
    						else '90分以上'
    						end as 英语各分数段 ,count(*) as 人数 from xs_cj group by 英语各分数段");
    	out(res);
    	//选出计算机各分数段人数
        res=mysql_query(&myCont,"select
    		                case
    						when 计算机<60 then '不及格'
    						when 计算机>=60 and 计算机<70 then '60—70分'
    						when 计算机>=70 and 计算机<80 then '70—80分'
    						when 计算机>=80 and 计算机<90 then '80—90分'
    						else '90分以上'
    						end as 计算机各分数段 ,count(*) as 人数 from xs_cj group by 计算机各分数段");
    	out(res);
    }
    void Seek()           //查找某人信息
    {
    	cout<<"(1) 学号查询"<<endl;
    	cout<<"(2) 姓名查询"<<endl;
    	int num;      //选择序号
    	cin>>num;
    	switch(num)
    	{
    	case 1:
    		char StudentId1[10];
    		cout<<"请输入学号"<<endl;
    		cin>>StudentId1;
    		sprintf(query,"select *from xs_cj where 学号='%s';",StudentId1);  //将查询语句赋给字符串query
    		res=mysql_query(&myCont,query);
    		out(res);
    		break;
    	default:
    		char StudentName1[10];
    		cout<<"请输入姓名"<<endl;
    		cin>>StudentName1;
    		sprintf(query,"select *from xs_cj where 姓名='%s';",StudentName1);
    		res=mysql_query(&myCont,query);
    		out(res);
    	}
    }
    void Release()
    {
    	if(result!=NULL) mysql_free_result(result);//释放二维表result中的结果资源
    	mysql_close(&myCont);//断开与MySQL的连接
    }
    int main()
    {
    	Connect();
    	SetCharacter();
    	cout<<"(1) 添加学生成绩信息"<<endl;
    	cout<<"(2) 按各门课程成绩排序"<<endl;
    	cout<<"(3) 按平均成绩排序"<<endl;
    	cout<<"(4) 学生成绩整体情况"<<endl;
    	cout<<"(5) 查询学生成绩"<<endl;
    	cout<<"请输入操作编号"<<endl;
    	int nn;
    	while(cin>>nn)
    	{
    	    switch(nn)
    	    {
    	    case 1:
    		     Add();             //添加
    		     break;
    	    case 2:
    		     order();            //排序
    		     break;
    	    case 3:
    		     Ave();            //求平均成绩
    		     break;
    	    case 4:
    		     Divid();           //成绩分布
    		     break;
    	    case 5:
    		     Seek();          //查找
    		     break;
    	    }
    	}
    	Release();            //释放数据库
    	system("pause");      //暂停
    	return 0;
    }
    

  • 相关阅读:
    git 删除已经提交的文件
    IDEA不显示service 服务窗口
    MySQL SQL语句查询结果 多列合并为1列
    Linux远程执行脚本
    mycat 连接命令
    win10 关闭被占用的端口
    ERROR 1045 (HY000): Access denied for user 'root', because password is error
    unblock with 'mysqladmin flush-hosts'
    neo4j数据库cypher查询
    基于websocket的网页实时消息推送与在线聊天(上篇)
  • 原文地址:https://www.cnblogs.com/zztong/p/6695287.html
Copyright © 2011-2022 走看看