mysql++读写BLOB数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: mysql++读写BLOB数据 1、使用sql_create_n宏函数,建立数据库表字段与对象。    #define sql_create_2(NAME, CMP, CONTR, T1, I1, T2, I2) \         sql_create_complete_2(NAME, C.

mysql++读写BLOB数据

1、使用sql_create_n宏函数,建立数据库表字段与对象。
   #define sql_create_2(NAME, CMP, CONTR, T1, I1, T2, I2) \
        sql_create_complete_2(NAME, CMP, CONTR, T1, I1, #I1, T2, I2, #I2) \
        //NAME:表名;CMP:比较函数;CONTR:构造函数;T1:字段类型;I1:字段名;T2:字段类型;I2:字段名
2、写数据
  1)获取Query
  2)inset 插入上面定义对象得实例
  3)execute执行
3、读数据
  1)获取Query
  2)执行sql,query.store()
  3)获取数据,将数据赋值到对象实例中。
        mysqlpp::Query query = pConn->query();
        query << szSql;
        mysqlpp::StoreQueryResult res = query.store();
        t_electronicWaybill waybill = res[0];        //查询一条记录

完整代码


#include <mysql++.h>
#include <ssqls.h>
sql_create_5(t_electronicWaybill,
1,2,
mysqlpp::sql_int, id,
mysqlpp::sql_int_unsigned, device_id,
mysqlpp::sql_blob_null, waybill_data,
mysqlpp::sql_int, waybill_datasize,
mysqlpp::sql_datetime, currenttime)
//插入运单
bool InsertElectronicWaybill(unsigned int nDeviceId, char *pData, int nDataSize, char *pCurrentTime)
{
bool bSuccess = false;
mysqlpp::Connection* pConn = GetConnection(); //从连接池中获取一个连接
if (pConn == NULL)
{
return false;
}
t_electronicWaybill waybill;
waybill.waybill_data.data.assign(pData,nDataSize);
waybill.waybill_datasize = nDataSize;
waybill.device_id = nDeviceId;
waybill.id = 0;
int nYear = 0, nMonth = 0, nDay = 0, nHour = 0, nMinute = 0, nSecond = 0;
try {
sscanf(pCurrentTime, "%d-%d-%d %d:%d:%d",&nYear,&nMonth,&nDay,&nHour,&nMinute,&nSecond);
}
catch(...){
}
mysqlpp::DateTime *pDateTimeTemp = new mysqlpp::DateTime(nYear,nMonth,nDay,nHour,nMinute,nSecond);
waybill.currenttime = *pDateTimeTemp;
mysqlpp::Query query = pConn->query();
query.insert(waybill);
mysqlpp::SimpleResult res;
try {
res = query.execute();
bSuccess = true;
}
catch (mysqlpp::Exception & ex)
{
OutputDebugString(ex.what());
}
if (pDateTimeTemp != NULL)
{
delete pDateTimeTemp;
}
ReleaseConnection(pConn); //释放连接
return bSuccess;
}
//查询运单
bool QueryElectronicWaybill(unsigned int uiRecordId, unsigned int & nDeviceId, char *pData, int & nDataSize, char *pCurrentTime)
{
bool bSuccess = false;
mysqlpp::Connection* pConn = GetConnection(); //从连接池中获取一个连接
if (pConn == NULL)
{
return false;
}
char szSql[256] = { 0 };
sprintf_s(szSql, "select * from t_electronicWaybill where id = %u", uiRecordId);
try {
mysqlpp::Query query = pConn->query();
query << szSql;
mysqlpp::StoreQueryResult res = query.store();
t_electronicWaybill waybill = res[0];
memcpy(pData, waybill.waybill_data.data, waybill.waybill_data.data.length());
nDataSize = waybill.waybill_datasize;
nDeviceId = waybill.device_id;
if (pCurrentTime != NULL)
{
sprintf_s(pCurrentTime, 23, "%04d-%02d-%02d %02d:%02d:%02d", waybill.currenttime.year(), waybill.currenttime.month(),
waybill.currenttime.day(), waybill.currenttime.hour(), waybill.currenttime.minute(), waybill.currenttime.second());
}
}
catch (mysqlpp::Exception & ex)
{
OutputDebugString(ex.what());
}
ReleaseConnection(pConn); //释放连接
return bSuccess;
}

Navicat for MySQL 查看BLOB字段内容
https://blog.csdn.net/lwei_998/article/details/41871329

原文地址 https://blog.csdn.net/byxdaz/article/details/81413715
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
114 4
|
2天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
16 6
|
2天前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
19 6
|
21天前
|
SQL 存储 缓存
MySQL是如何保证数据不丢失的?
文章详细阐述了InnoDB存储引擎中Buffer Pool与DML操作的关系。在执行插入、更新或删除操作时,InnoDB为了减少磁盘I/O,会在Buffer Pool中缓存数据页进行操作,随后将更新后的“脏页”刷新至磁盘。为防止服务宕机导致数据丢失,InnoDB采用了日志先行(WAL)机制,通过将DML操作记录为Redo Log并异步刷新到磁盘,结合双写机制和合理的日志刷新策略,确保数据的持久性和一致性。尽管如此,仍需合理配置参数以平衡性能与数据安全性。
MySQL是如何保证数据不丢失的?
|
19天前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
65 0
|
19天前
|
存储 关系型数据库 MySQL
|
19天前
|
存储 XML 关系型数据库
深入理解MySQL中的BLOB和TEXT数据类型
【8月更文挑战第31天】
97 0
|
19天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
87 0
|
分布式计算 关系型数据库 MySQL
E-Mapreduce如何处理RDS的数据
目前网站的一些业务数据存在了数据库中,这些数据往往需要做进一步的分析,如:需要跟一些日志数据关联分析,或者需要进行一些如机器学习的分析。在阿里云上,目前E-Mapreduce可以满足这类进一步分析的需求。
4960 0
|
4天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
58 11

热门文章

最新文章