VS连接数据库后实现数据库创建操作

目录

内容

 一、用户表和试题表的添加(mysql)

二、数据库相关函数介绍

相关头文件

相关函数 

 三、创建用户、题库

创建用户

创建题库


内容

  1. 用户表和试题表的添加(mysql
  2. 数据库相关函数介绍
  3. 创建用户、创建试题(客户端

 一、用户表和试题表的添加(mysql)

1)show databases; (查询数据库)

1-2)create database test; 创建数据库test

1-3)drop database test; 删除数据库test

2use test;(进入test数据库)

3)show tables;(列出数据库中的表)

4)create table db3(id varchar(32), name varchar(32),pwd varchar(32),role varchar(32)); (创建新表--用户表)

create table user(id varchar(32), name varchar(32),pwd varchar(32),role varchar(32)); 创建表

insert into user values( '1000' ,'张三' , '111111', '学生' );

insert into user values( '1001' ,'李四' , '111111', '学生' );

insert into user values( '1002' ,'王二' , '111111', '学生' );

insert into user values( '1003' ,'小明' , '111111', '学生' );

insert into user values( '1004' ,'小强' , '111111', '教师' );

update user set id= '2000' where id='1000';

update user set name= '张三', role = '教师' where id='2000';

update user set name='小李' where id='3';

select * from user; 查询用户表user

select name from user where id='1';

select role from user where id='1';

drop table user;删除表(将表彻底删除掉

delete from user where id= '1005'; 删除表中的一行

delete from user where name= '小张';

delete from user; 清除表中的所有数据

5)创建考题表

#创建考题id:题号, name:题目, a:选项A, b:选项B, c:选项C, d:选项D, ans:标准答案, score:分数

#create table que(id varchar(32),name varchar(32),a varchar(32),b varchar(32),c varchar(32),d varchar(32),ans varchar(32),score varchar(32));

insert into que values('1','1+1=','0','1','2','3','C','5');

insert into que values('2','1+2=','0','1','2','3','D','5');

insert into que values('3','1+3=','4','1','2','3','A','5');

insert into que values('4','1×3=','0','1','2','3','D','5');

select * from que; 查询表

select* from que where id='1';

select ans from que where id='1';

select score from que where id='1';

select name from que where id='1';

update que set name='2+1=' where id='2';

update que set ans='B' where id='2';

update que set score='3' where id='2'; 

 展示:

二、数据库相关函数介绍

相关头文件

1#include <iostream>

input out stream的简写,输入输出流头文件

注意:在VS编程时要添加using namespace std;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout

//2)#include <WinSock2.h>

进行网络编程需要winsock2.h

2)#include <mysql.h>    连接mysql数据库,数据库操作、开发

3)#include<cstdlib>

包含是一些常用的函数,但是又不知道把它们放到哪里合适,因此就都放到了stdlib.h这个头文件中。stdlib.h可以提供一些函数与符号常量,具体如下:根据ISO标准,stdlib.h提供以下类型:
size_t, wchar_t, div_t, ldiv_t, lldiv_t
常量
NULL, EXIT_FAILURE, EXIT_SUCESS, RAND_MAX, MB_CUR_MAX
函数
atof, atoi, atol, strtod, strtof, strtols, strtol, strtoll, strtoul, strtoull, rand, srand, callc, free, maloc, realloc, abort, atexit, exit, getenv, system, bsearch, qsort, abs, div, labs, ldiv, llabs, tlldiv, mblen, mbtowc, wctomb, mbstowcs, wcstombs包含函数:

4#include <ctime> ctime功能是把日期和时间转换为字符串

相关函数 

1、调用mysql_query函数进行数据库查询。mysql_query函数的原型如下:

int mysql_query(MYSQL *mysql, const char *stmt_str)

参数说明:mysql–前面定义的MYSQL变量;stmt_str–SQL语句有增删改查四种

DROP TABLE IF EXISTS test_table

                             CREATE TABLE test_table(id INT)

                      INSERT INTO test_table VALUES(10)

                      UPDATE test_table SET id=20 WHERE id=10

                      SELECT * FROM test_table WHERE ID=10

DELETE FROM test_table where name=…

                      DROP TABLE test_table

set names gbk   可以用汉字

查询成功则该函数返回0。

2、通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。返回值是MYSQL_RES结构体类型的指针。如果没有返回结果集或执行错误,则返回值为NULL。MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据。

两个函数的原型分别为:

MYSQL_RES *  mysql_store_result(MYSQL *mysql);

MYSQL_RES * mysql_use_result(MYSQL *mysql);

这两个函数分别代表了获取查询结果的两种方式。第一种,调用mysql_store_result函数将从Mysql服务器查询的所有数据都存储到客户端,然后读取;第二种,调用mysql_use_result初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行mysql_fetch_row读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result。

3、调用mysql_fetch_row或mysql_fetch_field函数读取结果集数据。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result),参数result就是mysql_store_result或mysql_use_result的返回值。该函数返回MYSQL_ROW型的变量,MYSQL ROW的定义如下:typedef char **MYSQL_ROW; 可见,它实际上是char **类型,指向一个字符串数组。假设为row,则row[i]为第i个字段的值。当到结果集尾部时,此函数返回NULL。

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result),该函数返回MYSQL_FIELD型的变量,MYSQL_FIELD中包含了字段名、字段类型和大小等信息。可以重复调用mysql_fetch_field函数获得所有字段的信息。重复调用该函数可以获得结果集中所有列的信息。没有更多列时,此函数返回NULL。

 三、创建用户、题库

创建用户

函数如下

bool Creatuser()
{
	string cid, cname, cqwd, crol;
	cout << "请输入账号" << endl;
	cin >> cid;
	cout << "请输入名字" << endl;
	cin >> cname;
	cout << "请输入要创建的密码" << endl;
	cin >> cqwd;
	cout << "请输入身份" << endl;
	cin >> crol;
	string Newuser = "insert into user values(\"" + cid + "\",\"" + cname + "\",\"" + cqwd + "\",\"" + crol + "\")";
	const char* user = Newuser.c_str();//用于查询的长字符串
	cout << user << endl;
	mysql_query(&mysql, "set names gbk");
	if (mysql_query(&mysql, user))//成功返回0
	{
		printf("创建失败%s\n", mysql_error(&mysql));
		return false;
	}
	else if(mysql_affected_rows(&mysql)==0)//影响0行,即没有添加;老师是这样讲的,但是这段有问题,没有作用,之后解决下
	{
		printf("用户已存在");
		return true;
	}
	else if (mysql_affected_rows(&mysql) > 0)//有影响,即有添加
	{
		printf("创建成功");
		return true;
	}
}

 在main函数中调用,展示如下

在mysql中查看

SELECT *from user;

创建题库

函数如下

bool Deleteque() 
{
	string qname;
	cout << "请输入删除的题目" << endl;
	cin >> qname;
	string directives = "delete from que where id= (\"" + qname + "\")";
	const char* que = directives.c_str();//用于查询的长字符串
	cout << que << endl;
	mysql_query(&mysql, "set names gbk");
	if (mysql_query(&mysql, que))//成功返回0
	{
		printf("删除失败%s\n", mysql_error(&mysql));
		return false;
	}
	else if (mysql_affected_rows(&mysql) == 0)//影响0行,即没有添加,这段有问题,没有作用,之后解决下
	{
		printf("题目不存在");
		return true;
	}
	else if (mysql_affected_rows(&mysql) > 0)//有影响行数,表发生改变
	{
		printf("删除成功");
		return true;
	}
}

同上,在main函数中调用,这里不进行展示


以上为第二天的实训内容,比较简单,mysql简单建表操作,C++编写两个函数,分别在两个表中添加数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值