1、在LXMysql.h和LXMysql.cpp分别定义和编写关于pin语句的代码
//获取更新数据的sql语句 where语句中用户要包含where 更新 std::string GetUpdatesql(XDATA kv, std::string table, std::string where);
std::string LXMysql::GetUpdatesql(XDATA kv, std::string table, std::string where) { string sql = ""; if (kv.empty() || table.empty()) { return ""; } //update t_vedio set name= 'update001', size=1000 where id =10; sql = "update `"; sql += table; sql += "` set "; for (auto ptr = kv.begin(); ptr != kv.end();ptr++) { sql += "`"; sql += ptr->first; sql += "`=' "; sql += ptr->second.data; sql += "',"; } //去除多余的逗号 sql[sql.size() - 1] = ' '; sql += " "; sql += where; return sql; }
2、在LXMysql.h和LXMysql.cpp分别定义和编写UpdateBin 插入二进制数据
//返回更新数量,失败返回-1 int UpdateBin(XDATA kv, std::string table, std::string where);
int LXMysql::UpdateBin(XDATA kv, std::string table, std::string where) { if (!mysql || kv.empty() || table.empty()) { return -1; } //update t_vedio set name= 'update001', size=1000 where id =10; string sql = ""; sql = "update `"; sql += table; sql += "` set "; MYSQL_BIND bind[256] = { 0 }; int i = 0; for (auto ptr = kv.begin(); ptr != kv.end();ptr++) { sql += "`"; sql += ptr->first; sql += "`=?,"; bind[i].buffer = (char*)ptr->second.data; bind[i].buffer_length = ptr->second.size; //强转 bind[i].buffer_type = (enum_field_types)ptr->second.type; i++; } //去除多余的逗号 sql[sql.size() - 1] = ' '; sql += " "; sql += where; //预处理sql语句 上下文 MYSQL_STMT* stmt = mysql_stmt_init(mysql); if (!stmt) { cerr << "mysql_stmt_init failed " << mysql_error(mysql) << endl; return -1; } if (mysql_stmt_prepare(stmt, sql.c_str(), sql.length())) { mysql_stmt_close(stmt); cerr << "mysql_stmt_prepare failed " << mysql_stmt_error(stmt) << endl; return -1; } //绑定 if (mysql_stmt_bind_param(stmt, bind) != 0) { mysql_stmt_close(stmt); cerr << "mysql_stmt_bind_param failed " << mysql_stmt_error(stmt) << endl; return false; } //执行 if (mysql_stmt_execute(stmt) != 0) { mysql_stmt_close(stmt); cerr << "mysql_stmt_execute failed " << mysql_stmt_error(stmt) << endl; return -1; } mysql_stmt_close(stmt); return mysql_stmt_affected_rows(stmt); }
3、测试
//更新二进制数据 //修改id=3的图片 XDATA udata2; LXData file2; file2.LoadFile("F:/Documents/Desktop/c++/数据库plus/src/bin/test2.jpg"); udata2["data"] = file2; cout << " my.UpdateBin=" << my.UpdateBin(udata2, "t_vedio", "where id=3") << endl; file2.Drop();
猜你喜欢
- 1小时前python—openpyxl操作excel详解
- 1小时前【模型部署】TensorRT的安装与使用
- 1小时前qss的使用
- 1小时前安全技能讲座 - 便携式灭火器 (Portable Fire Extinguishers )
- 1小时前前端已死?探讨人工智能与低代码对前端的影响
- 1小时前java的下载
- 1小时前vue基于Spring Boot的中医在线学习课程购买服务管理系统
- 1小时前.NET国产化改造探索(三)、银河麒麟安装.NET 8环境
- 1小时前解决Python ImportError: No module named ‘distutils.util‘错误
- 1小时前Python 架构模式:附录 A 到 E
网友评论
- 搜索
- 最新文章
- 热门文章