Demo:C++操作MySql
来源:互联网 发布:系统功能开发 java 编辑:程序博客网 时间:2024/05/17 00:04
好久没写东西了,上几天想起数据库操作了,用C++基于MySql写了个Demo。主要包含对数据库的 增、删、改、查 基本操作,如有不当请留言。 分享代码如下:
Sql.h:
#ifndef _SQL_H_#define _SQL_H_#include <iostream>#include "mysql.h"using namespace std;class SQL{public: SQL(); ~SQL(); void InitMysqlInfo(); bool Connect_to_Mysql(MYSQL &mysql); void Operate_Mysql_Modify(MYSQL &mysql, const char *Mysql_Sentence); void Operate_Mysql_Query(MYSQL *mysql, const char *Mysql_Sentence); void Disconnect_to_Mysql(MYSQL *mysql); MYSQL mysql;private: const char *user; //username const char *pswd; //password const char *host; //host address const char *database; //database unsigned int port; //server port };#endif
Sql.cpp:
#include "Sql.h"SQL::SQL(){ user = new char[]; pswd = new char[]; host = new char[]; database = new char[]; InitMysqlInfo();}SQL::~SQL(){ user = nullptr; delete user; pswd = nullptr; delete pswd; host = nullptr; delete host; database = nullptr; delete database;}void SQL::InitMysqlInfo(){ //和自己数据库设置有关 user = "root"; pswd = "admin"; host = "数据库所在机器IP地址"; database = "test"; port = 3306;}bool SQL::Connect_to_Mysql(MYSQL &mysql){ //初始化数据结构 mysql_init(&mysql); //在连接数据库之前,设置额外的连接选项 //可以设置的选项很多,这里设置字符集,否则无法处理中文 if (0 == mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk")) { cout << "mysql_options() succeed" << endl; } else { cout << "mysql_options() failed" << endl; } if (&mysql != nullptr && mysql_real_connect(&mysql,host,user,pswd,database,port,nullptr,0)) { cout << "Connect_to_Mysql Success" << endl; return true; } else { cout << "Connect_to_Mysql Failed" << endl; cout << mysql_error(&mysql) << endl; return false; }}void SQL::Operate_Mysql_Modify(MYSQL &mysql, const char *Mysql_Sentence){ if (0 == mysql_query(&mysql, Mysql_Sentence)) { cout << "Operate_Mysql Modify Success" << endl; } else { cout << "Operate_Mysql Modify Failed" << endl; cout << mysql_error(&mysql) << endl; }}void SQL::Operate_Mysql_Query(MYSQL *mysql, const char *Mysql_Sentence){ if (0 == mysql_query(mysql, Mysql_Sentence)) { cout << "Operate_Mysql Query Success" << endl; MYSQL_RES *result = nullptr; result = mysql_store_result(mysql); unsigned int rows = (unsigned int)mysql_num_rows(result); cout << "总记录条数: " << rows << endl; unsigned int fields = mysql_num_fields(result); cout << "每条记录总共 " << fields << " 个字段" << endl; MYSQL_FIELD *field = nullptr; for (unsigned int i = 0; i < fields; i++) { field = mysql_fetch_field_direct(result, i); cout << field->name << "\t\t"; } cout << endl; MYSQL_ROW row = nullptr; row = mysql_fetch_row(result); while (nullptr != row) { for (unsigned int i = 0; i < fields; ++i) { if (row[i] != nullptr) cout << row[i] << "\t\t"; else cout << "null" << "\t\t"; } cout << endl; row = mysql_fetch_row(result); } mysql_free_result(result); } else { cout << "Operate_Mysql Query Failed" << endl; cout << mysql_error(mysql) << endl; }}void SQL::Disconnect_to_Mysql(MYSQL *mysql){ mysql_close(mysql);}
main.cpp.
#include "Sql.h"int main(){ SQL Mysql; cout << "初始化数据库" << endl;//初始化数据库 if (0 == mysql_library_init(0, NULL, NULL)) cout << "mysql_library_init() succeed" << endl; else cout << "mysql_library_init() failed" << endl; cout << "连接数据库" << endl; if (Mysql.Connect_to_Mysql(Mysql.mysql)) { cout << "新建表" << endl; //新建表 Mysql.Operate_Mysql_Modify(Mysql.mysql, "create table if not exists\ test_table(id int(4), name varchar(20) character set gb2312 collate gb2312_chinese_ci)"); cout << "添加记录" << endl; //添加记录 Mysql.Operate_Mysql_Modify(Mysql.mysql, "insert into test_table\ values(1, 'aaa'), (2, 'bbb'), (3, 'ccc')"); Mysql.Operate_Mysql_Modify(Mysql.mysql, "insert into test_table(id)\ values(11), (22), (33)"); cout << "查找记录" << endl; //查找记录 Mysql.Operate_Mysql_Query(&Mysql.mysql, "select * from test_table\ where id = 22"); Mysql.Operate_Mysql_Query(&Mysql.mysql, "select * from test_table"); cout << "修改记录" << endl; //修改记录 Mysql.Operate_Mysql_Modify(Mysql.mysql, "update test_table\ set id = 22\ where name = 'aaa'"); cout << "修改表明" << endl; //修改表明 Mysql.Operate_Mysql_Modify(Mysql.mysql, "alter table test_table rename re_test_table"); cout << "删除记录" << endl; //删除记录 Mysql.Operate_Mysql_Modify(Mysql.mysql, "delete from re_test_table\ where id = 2");//删除表中的特定条件的记录 cout << "清空表" << endl; //清空表 Mysql.Operate_Mysql_Modify(Mysql.mysql, "truncate table re_test_table");//删除表中的所有数据记录,清空表 // Mysql.Operate_Mysql_Modify(Mysql.mysql, "delete from test_table");//删除表中的所有数据记录,清空表 cout << "删除表" << endl; //删除表 Mysql.Operate_Mysql_Modify(Mysql.mysql, "drop table re_test_table");//删除表 cout << "断开连接" << endl; //断开连接 Mysql.Disconnect_to_Mysql(&Mysql.mysql); } else { cout << "Error...Failed to connect to Mysql !" << endl; } mysql_library_end(); system("pause"); return 0;}
Coding…
0 0
- C MYSQL 数据库操作Demo
- Demo:C++操作MySql
- linux c mysql demo
- python 操作mysql数据库demo
- Mybatis入门 操作MySQL DEMO
- shell 操作mysql保存数据脚本 demo
- C语言文件读写基本操作DEMO
- C语言文件读写基本操作DEMO
- mysql c操作函数
- 用C操作MySQL
- C操作mysql
- C语言操作Mysql
- c语言操作mysql
- C操作MYSQL
- c语言操作mysql
- C操作mysql
- C语言操作MYSQL
- C操作MYSQL数据库
- Python 中利用 matplotlib 进行曲线的部分填充 fill_betweenx
- Object-c学习之自定义视图
- 以图搜图/图像检索相关资料
- cocos2dx android 实现应用重启
- Sql Server 命令
- Demo:C++操作MySql
- java自带线程池和队列详细讲解,android中适用
- 51nod 1154 回文串划分 (DP)
- 网站开发进阶(十六)错误提示:Multiple annotations found at this line:- basePath cannot be resolved to a variable
- 你好,世界
- cheng@Linux之基础--GPIO实验
- 文章中运用到的数学公式
- 小数化分数
- poj 2594 Treasure Exploration 二分匹配