当前位置:   article > 正文

vscode中使用C++实现mysql数据库编程(附带相关案例)_vscode 连接mysql c++

vscode 连接mysql c++

windows下vscode连接Linux中的MySQL教程见:https://blog.csdn.net/weixin_47156401/article/details/129469835?spm=1001.2014.3001.5501

分布式数据库,顾名思义:分布式+数据库。用一句话总结为:由多个独立实体组成,并且彼此通过网络进行互联的数据库。

使用vscode连接Linux中的mysql,并进行mysql开发,对于初学者来讲多少有些摸不着头脑,下面给出mysql的建库、建表,以及增、删、改、查等基本操作。

一、代码解读

(1)主函数

  1. #include<iostream>
  2. #include<mysql.h>
  3. #include<cstring>
  4. #include<istream>
  5. #include<vector>
  6. using namespace std;
  7. MYSQL mysql; //mysql连接
  8. MYSQL_FIELD*fd; //字段列数组
  9. char field[32][32]; //存字段名二维数组
  10. MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
  11. MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列
  12. bool ConnectDatabase(); //函数声明
  13. void FreeConnect();
  14. bool InsertData(); //增
  15. bool ModifyData(); //改
  16. bool DeleteData(); //删
  17. int main(){
  18. ConnectDatabase();
  19. InsertData();
  20. ModifyData();
  21. DeleteData();
  22. mysql_close(&mysql);
  23. return 0;
  24. }

(2)连接Linux中的mysql并进行创建库(my_database)、表(my_table)操作

  1. //连接mysql并创建库和表
  2. bool ConnectDatabase(){
  3. //初始化mysql连接
  4. mysql_init(&mysql); //等价于&mysql=mysql_init(NULL);
  5. const char host[]="localhost";
  6. const char user[]="root";
  7. const char psw[]="123456";
  8. //const char table[]="test"; //需要链接的数据库,如果已经创建了直接连接即可
  9. const int port =3306;
  10. //返回false则连接失败,返回true则连接成功
  11. if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
  12. {
  13. //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
  14. cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
  15. return false;
  16. }
  17. else
  18. {
  19. cout<<"Connected..."<<endl;
  20. }
  21. //-------------创建库-------------//
  22. char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
  23. mysql_query(&mysql, drop_db_query);
  24. string db_name= "CREATE DATABASE IF NOT EXISTS my_database";
  25. //执行库创建语句,返回0表示执行成功,返回1表示执行失败
  26. int result=mysql_query(&mysql,db_name.c_str());
  27. if(result){
  28. cout<<"库创建失败!"<<endl;
  29. return false;
  30. }else{
  31. cout<<"student库创建成功......"<<endl;
  32. }
  33. // //-------------连接数据库-------------//
  34. // if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
  35. // {
  36. // //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
  37. // cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
  38. // return false;
  39. // }
  40. // else
  41. // {
  42. // cout<<"Connected..."<<endl;
  43. // return true;
  44. // }
  45. //选择数据库
  46. if (mysql_select_db(&mysql, "my_database")) {
  47. cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
  48. return false;
  49. }
  50. //-------------在my_database库中创建表-------------//
  51. char *drop_table_query = "DROP TABLE IF EXISTS my_table";
  52. mysql_query(&mysql, drop_table_query);
  53. string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";
  54. if (mysql_query(&mysql, table.c_str())) {
  55. cout << "user创建失败!" << mysql_error(&mysql) << endl;
  56. return false;
  57. }else{
  58. cout << "user创建成功......"<<endl;
  59. }
  60. }

(3)往表(my_table)中插入数据

  1. //插入数据
  2. bool InsertData(){
  3. //插入数据
  4. string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
  5. //执行SQL语句
  6. if(mysql_query(&mysql, query.c_str())){
  7. cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
  8. return false;
  9. }
  10. else
  11. {
  12. cout<<"数据插入成功!"<<endl;
  13. }
  14. //插入数据
  15. string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
  16. mysql_query(&mysql, data1.c_str());
  17. //插入数据
  18. string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
  19. mysql_query(&mysql, data2.c_str());
  20. // select and print data
  21. string query2 = "SELECT * FROM my_table";
  22. if (mysql_query(&mysql, query2.c_str())) {
  23. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  24. return false;
  25. }
  26. MYSQL_RES *res = mysql_use_result(&mysql);
  27. MYSQL_ROW row;
  28. while ((row = mysql_fetch_row(res)) != NULL) {
  29. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  30. }
  31. mysql_free_result(res);
  32. }

(4)修改表(my_table)中的数据

  1. //修改数据
  2. bool ModifyData(){
  3. //修改内容
  4. string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";
  5. //执行SQL语句
  6. if(mysql_query(&mysql, query.c_str())){
  7. cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
  8. return false;
  9. }else{
  10. cout<<"数据修改成功!"<<endl;
  11. }
  12. // select and print data
  13. string query2 = "SELECT * FROM my_table";
  14. if (mysql_query(&mysql, query2.c_str())) {
  15. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  16. return false;
  17. }
  18. MYSQL_RES *res = mysql_use_result(&mysql);
  19. MYSQL_ROW row;
  20. while ((row = mysql_fetch_row(res)) != NULL) {
  21. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  22. }
  23. mysql_free_result(res);
  24. }

(5)删除表(my_table)中的指定数据

  1. //删除数据
  2. bool DeleteData(){
  3. /*eg: "DELETE FROM my_table where id=2";*/
  4. string query="DELETE FROM my_table where id=2";
  5. cout<<"please input the sql:"<<endl;
  6. getline(cin,query);//这里手动输入sql语句
  7. //执行SQL语句
  8. if(mysql_query(&mysql, query.c_str())){
  9. cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
  10. return false;
  11. }else{
  12. cout<<"成功删除数据!"<<endl;
  13. }
  14. // select and print data
  15. string query2 = "SELECT * FROM my_table";
  16. if (mysql_query(&mysql, query2.c_str())) {
  17. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  18. return false;
  19. }
  20. MYSQL_RES *res = mysql_use_result(&mysql);
  21. MYSQL_ROW row;
  22. while ((row = mysql_fetch_row(res)) != NULL) {
  23. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  24. }
  25. mysql_free_result(res);
  26. }

(6)释放资源

  1. //释放资源
  2. void FreeConnect(){
  3. mysql_free_result(res); //释放一个结果集合使用的内存。
  4. mysql_close(&mysql); //关闭一个服务器连接。
  5. }

二、完整代码

  1. #include<iostream>
  2. #include<mysql.h>
  3. #include<cstring>
  4. #include<istream>
  5. #include<vector>
  6. using namespace std;
  7. MYSQL mysql; //mysql连接
  8. MYSQL_FIELD*fd; //字段列数组
  9. char field[32][32]; //存字段名二维数组
  10. MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
  11. MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列
  12. bool ConnectDatabase(); //函数声明
  13. void FreeConnect();
  14. bool InsertData(); //增
  15. bool ModifyData(); //改
  16. bool DeleteData(); //删
  17. int main(){
  18. ConnectDatabase();
  19. InsertData();
  20. ModifyData();
  21. DeleteData();
  22. mysql_close(&mysql);
  23. return 0;
  24. }
  25. //连接mysql并创建库和表
  26. bool ConnectDatabase(){
  27. //初始化mysql连接
  28. mysql_init(&mysql); //等价于&mysql=mysql_init(NULL);
  29. const char host[]="localhost";
  30. const char user[]="root";
  31. const char psw[]="123456";
  32. //const char table[]="test"; //需要链接的数据库,如果已经创建了直接连接即可
  33. const int port =3306;
  34. //返回false则连接失败,返回true则连接成功
  35. if(!mysql_real_connect(&mysql, host, user, psw, NULL, port, NULL,0))
  36. {
  37. //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
  38. cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
  39. return false;
  40. }
  41. else
  42. {
  43. cout<<"Connected..."<<endl;
  44. }
  45. //-------------创建库-------------//
  46. char *drop_db_query = "DROP DATABASE IF EXISTS my_database";
  47. mysql_query(&mysql, drop_db_query);
  48. string db_name= "CREATE DATABASE IF NOT EXISTS my_database";
  49. //执行库创建语句,返回0表示执行成功,返回1表示执行失败
  50. int result=mysql_query(&mysql,db_name.c_str());
  51. if(result){
  52. cout<<"库创建失败!"<<endl;
  53. return false;
  54. }else{
  55. cout<<"student库创建成功......"<<endl;
  56. }
  57. // //-------------连接数据库-------------//
  58. // if(!mysql_real_connect(&mysql, host, user, psw, "my_database", port, NULL,0))
  59. // {
  60. // //中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去
  61. // cout<<"Error connecting to database:"<<mysql_error(&mysql)<<endl;
  62. // return false;
  63. // }
  64. // else
  65. // {
  66. // cout<<"Connected..."<<endl;
  67. // return true;
  68. // }
  69. //选择数据库
  70. if (mysql_select_db(&mysql, "my_database")) {
  71. cout<<"选择数据库失败!"<<mysql_error(&mysql)<<endl;
  72. return false;
  73. }
  74. //-------------在my_database库中创建表-------------//
  75. char *drop_table_query = "DROP TABLE IF EXISTS my_table";
  76. mysql_query(&mysql, drop_table_query);
  77. string table="CREATE TABLE IF NOT EXISTS my_table (id int, name VARCHAR(20), number VARCHAR(20), email VARCHAR(20))";
  78. if (mysql_query(&mysql, table.c_str())) {
  79. cout << "user创建失败!" << mysql_error(&mysql) << endl;
  80. return false;
  81. }else{
  82. cout << "user创建成功......"<<endl;
  83. }
  84. }
  85. //释放资源
  86. void FreeConnect(){
  87. mysql_free_result(res); //释放一个结果集合使用的内存。
  88. mysql_close(&mysql); //关闭一个服务器连接。
  89. }
  90. /******************************数程库操作***********************************/
  91. //插入数据
  92. bool InsertData(){
  93. //插入数据
  94. string query="INSERT INTO my_table (id, name, number, email) VALUES (1, 'liubei', '33333333', '165438490@qq.com')";
  95. //执行SQL语句
  96. if(mysql_query(&mysql, query.c_str())){
  97. cout<<"数据插入失败!"<<mysql_error(&mysql)<<endl;
  98. return false;
  99. }
  100. else
  101. {
  102. cout<<"数据插入成功!"<<endl;
  103. }
  104. //插入数据
  105. string data1="insert into my_table values(2, 'guanyu', '22222222', '163438490@qq.com');";
  106. mysql_query(&mysql, data1.c_str());
  107. //插入数据
  108. string data2="insert into my_table values(3, 'zhangfei', '11111111', '164438490@qq.com');";
  109. mysql_query(&mysql, data2.c_str());
  110. // select and print data
  111. string query2 = "SELECT * FROM my_table";
  112. if (mysql_query(&mysql, query2.c_str())) {
  113. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  114. return false;
  115. }
  116. MYSQL_RES *res = mysql_use_result(&mysql);
  117. MYSQL_ROW row;
  118. while ((row = mysql_fetch_row(res)) != NULL) {
  119. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  120. }
  121. mysql_free_result(res);
  122. }
  123. //修改数据
  124. bool ModifyData(){
  125. //修改内容
  126. string query="UPDATE my_table SET email='166438490@qq.com' where name='liubei'";
  127. //执行SQL语句
  128. if(mysql_query(&mysql, query.c_str())){
  129. cout<<"修改数据失败!"<<mysql_error(&mysql)<<endl;
  130. return false;
  131. }else{
  132. cout<<"数据修改成功!"<<endl;
  133. }
  134. // select and print data
  135. string query2 = "SELECT * FROM my_table";
  136. if (mysql_query(&mysql, query2.c_str())) {
  137. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  138. return false;
  139. }
  140. MYSQL_RES *res = mysql_use_result(&mysql);
  141. MYSQL_ROW row;
  142. while ((row = mysql_fetch_row(res)) != NULL) {
  143. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  144. }
  145. mysql_free_result(res);
  146. }
  147. //删除数据
  148. bool DeleteData(){
  149. /*eg: "DELETE FROM my_table where id=2";*/
  150. string query="DELETE FROM my_table where id=2";
  151. cout<<"please input the sql:"<<endl;
  152. getline(cin,query);//这里手动输入sql语句
  153. //执行SQL语句
  154. if(mysql_query(&mysql, query.c_str())){
  155. cout<<"删除数据失败!"<<mysql_error(&mysql)<<endl;
  156. return false;
  157. }else{
  158. cout<<"成功删除数据!"<<endl;
  159. }
  160. // select and print data
  161. string query2 = "SELECT * FROM my_table";
  162. if (mysql_query(&mysql, query2.c_str())) {
  163. cout<<"数据查询失败!"<<mysql_error(&mysql)<<endl;
  164. return false;
  165. }
  166. MYSQL_RES *res = mysql_use_result(&mysql);
  167. MYSQL_ROW row;
  168. while ((row = mysql_fetch_row(res)) != NULL) {
  169. cout<<row[0]<<" "<<row[1]<<" "<<row[2]<<" "<<row[3]<<endl;
  170. }
  171. mysql_free_result(res);
  172. }

若有帮到你,点个赞,留下你的脚印哦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/242916
推荐阅读
相关标签
  

闽ICP备14008679号