分布式数据库,顾名思义:分布式+数据库。用一句话总结为:由多个独立实体组成,并且彼此通过网络进行互联的数据库。
使用vscode连接Linux中的mysql,并进行mysql开发,对于初学者来讲多少有些摸不着头脑,下面给出mysql的建库、建表,以及增、删、改、查等基本操作。
一、代码解读
(1)主函数
#include<iostream>
#include<mysql.h>
#include<cstring>
#include<istream>
#include<vector>
using namespace std;
MYSQL mysql; //mysql连接
MYSQL_FIELD*fd; //字段列数组
char field[32][32]; //存字段名二维数组
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列
bool ConnectDatabase(); //函数声明
void FreeConnect();
bool InsertData(); //增
bool ModifyData(); //改
bool DeleteData(); //删
int main(){
ConnectDatabase();
InsertData();
ModifyData();
DeleteData();
mysql_close(&mysql);
return 0;
}
(2)连接Linux中的mysql并进行创建库(my_database)、表(my_table)操作
//连接mysql并创建库和表
bool ConnectDatabase(){
//初始化mysql连接
mysql_init(&mysql); //等价于&mysql=mysql_init(NULL);
const char host[]="localhost";
const char user[]="root";
const char psw[]="123456";
//const char table[]="test"; //需要链接的数据库,如果已经创建了直接连接即可
const int port =3306;
//返回false则连接失败,返回true则连接成功
if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
{
//中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
return false;
}
else
{
cout<<"Connected..."<<endl;
}
//-------------创建库-------------//
char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
mysql_query(&mysql, drop_db_query);
string db_name= "CREATE DATABASE IF NOT EXISTS my_database";
//执行库创建语句,返回0表示执行成功,返回1表示执行失败
int result=mysql_query(&mysql,db_name.c_str());
if(result){
cout<<"库创建失败!"<<endl;
return false;
}else{
cout<<"student库创建成功......"<<endl;
}
// //-------------连接数据库-------------//
// if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
// {
// //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
// cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
// return false;
// }
// else
// {
// cout<<"Connected..."<<endl;
// return true;
// }
//选择数据库
if (mysql_select_db(&mysql, "my_database")) {
cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
return false;
}
//-------------在my_database库中创建表-------------//
char *drop_table_query = "DROP TABLE IF EXISTS my_table";
mysql_query(&mysql, drop_table_query);
string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";
if (mysql_query(&mysql, table.c_str())) {
cout << "user创建失败!" << mysql_error(&mysql) << endl;
return false;
}else{
cout << "user创建成功......"<<endl;
}
}
(3)往表(my_table)中插入数据
//插入数据
bool InsertData(){
//插入数据
string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
return false;
}
else
{
cout<<"数据插入成功!"<<endl;
}
//插入数据
string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
mysql_query(&mysql, data1.c_str());
//插入数据
string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
mysql_query(&mysql, data2.c_str());
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
(4)修改表(my_table)中的数据
//修改数据
bool ModifyData(){
//修改内容
string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
return false;
}else{
cout<<"数据修改成功!"<<endl;
}
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
(5)删除表(my_table)中的指定数据
//删除数据
bool DeleteData(){
/*eg: "DELETE FROM my_table where id=2";*/
string query="DELETE FROM my_table where id=2";
cout<<"please input the sql:"<<endl;
getline(cin,query);//这里手动输入sql语句
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
return false;
}else{
cout<<"成功删除数据!"<<endl;
}
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
(6)释放资源
//释放资源
void FreeConnect(){
mysql_free_result(res); //释放一个结果集合使用的内存。
mysql_close(&mysql); //关闭一个服务器连接。
}
二、完整代码
#include<iostream>
#include<mysql.h>
#include<cstring>
#include<istream>
#include<vector>
using namespace std;
MYSQL mysql; //mysql连接
MYSQL_FIELD*fd; //字段列数组
char field[32][32]; //存字段名二维数组
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列
bool ConnectDatabase(); //函数声明
void FreeConnect();
bool InsertData(); //增
bool ModifyData(); //改
bool DeleteData(); //删
int main(){
ConnectDatabase();
InsertData();
ModifyData();
DeleteData();
mysql_close(&mysql);
return 0;
}
//连接mysql并创建库和表
bool ConnectDatabase(){
//初始化mysql连接
mysql_init(&mysql); //等价于&mysql=mysql_init(NULL);
const char host[]="localhost";
const char user[]="root";
const char psw[]="123456";
//const char table[]="test"; //需要链接的数据库,如果已经创建了直接连接即可
const int port =3306;
//返回false则连接失败,返回true则连接成功
if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
{
//中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
return false;
}
else
{
cout<<"Connected..."<<endl;
}
//-------------创建库-------------//
char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
mysql_query(&mysql, drop_db_query);
string db_name= "CREATE DATABASE IF NOT EXISTS my_database";
//执行库创建语句,返回0表示执行成功,返回1表示执行失败
int result=mysql_query(&mysql,db_name.c_str());
if(result){
cout<<"库创建失败!"<<endl;
return false;
}else{
cout<<"student库创建成功......"<<endl;
}
// //-------------连接数据库-------------//
// if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
// {
// //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
// cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
// return false;
// }
// else
// {
// cout<<"Connected..."<<endl;
// return true;
// }
//选择数据库
if (mysql_select_db(&mysql, "my_database")) {
cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
return false;
}
//-------------在my_database库中创建表-------------//
char *drop_table_query = "DROP TABLE IF EXISTS my_table";
mysql_query(&mysql, drop_table_query);
string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";
if (mysql_query(&mysql, table.c_str())) {
cout << "user创建失败!" << mysql_error(&mysql) << endl;
return false;
}else{
cout << "user创建成功......"<<endl;
}
}
//释放资源
void FreeConnect(){
mysql_free_result(res); //释放一个结果集合使用的内存。
mysql_close(&mysql); //关闭一个服务器连接。
}
/******************************数程库操作***********************************/
//插入数据
bool InsertData(){
//插入数据
string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
return false;
}
else
{
cout<<"数据插入成功!"<<endl;
}
//插入数据
string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
mysql_query(&mysql, data1.c_str());
//插入数据
string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
mysql_query(&mysql, data2.c_str());
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
//修改数据
bool ModifyData(){
//修改内容
string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
return false;
}else{
cout<<"数据修改成功!"<<endl;
}
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
//删除数据
bool DeleteData(){
/*eg: "DELETE FROM my_table where id=2";*/
string query="DELETE FROM my_table where id=2";
cout<<"please input the sql:"<<endl;
getline(cin,query);//这里手动输入sql语句
//执行SQL语句
if(mysql_query(&mysql, query.c_str())){
cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
return false;
}else{
cout<<"成功删除数据!"<<endl;
}
// select and print data
string query2 = "SELECT * FROM my_table";
if (mysql_query(&mysql, query2.c_str())) {
cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
return false;
}
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL) {
cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
}
mysql_free_result(res);
}
若有帮到你,点个赞,留下你的脚印哦!