Skip to content

Commit b285bef

Browse files
committed
modify:data to blob type for database,support binary data now
1 parent 864b8aa commit b285bef

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

XEngine_SQLFile/XEngine_MQData.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
Target Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
1212
File Encoding : 65001
1313
14-
Date: 23/04/2023 09:23:59
14+
Date: 24/04/2023 14:58:11
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -29,11 +29,11 @@ CREATE TABLE `XEngine_CommKey` (
2929
`nQueueGetTime` bigint NOT NULL COMMENT '获取次数',
3030
`tszQueueLeftTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '过期时间',
3131
`tszQueuePublishTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发布时间',
32-
`tszQueueData` varchar(8192) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '保存数据',
32+
`tszQueueData` longblob NOT NULL COMMENT '保存数据',
3333
`nDataLen` int NOT NULL COMMENT '数据大小',
3434
`nDataType` tinyint NULL DEFAULT NULL COMMENT '数据类型',
3535
`tszQueueCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间',
3636
PRIMARY KEY (`ID`) USING BTREE
37-
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
37+
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
3838

3939
SET FOREIGN_KEY_CHECKS = 1;

XEngine_SQLFile/XEngine_MQUser.sql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
Target Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
1212
File Encoding : 65001
1313
14-
Date: 23/04/2023 09:23:49
14+
Date: 24/04/2023 15:00:41
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -44,7 +44,7 @@ CREATE TABLE `UserInfo` (
4444
`tszLoginTime` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '登录时间',
4545
`tszCreateTime` datetime NOT NULL COMMENT '注册时间',
4646
PRIMARY KEY (`ID`) USING BTREE
47-
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
47+
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
4848

4949
-- ----------------------------
5050
-- Table structure for UserKey
@@ -58,7 +58,7 @@ CREATE TABLE `UserKey` (
5858
`tszUPTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
5959
`tszCreateTime` datetime NOT NULL COMMENT '创建的时间',
6060
PRIMARY KEY (`ID`) USING BTREE
61-
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
61+
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
6262

6363
-- ----------------------------
6464
-- Table structure for UserTime
@@ -68,6 +68,8 @@ CREATE TABLE `UserTime` (
6868
`tszQueueName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '队列名称',
6969
`nIDMsg` bigint NOT NULL COMMENT '队列唯一ID',
7070
`nIDTime` bigint NOT NULL COMMENT '发布时间',
71+
`bActive` tinyint NULL DEFAULT NULL COMMENT '是否激活过',
72+
`bBreak` tinyint NULL DEFAULT NULL COMMENT '是否跳过自身',
7173
`tszCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间'
7274
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
7375

XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,24 @@ bool CDBModule_MQData::DBModule_MQData_Insert(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo
9292
DBModule_IsErrorOccur = true;
9393
DBModule_dwErrorCode = ERROR_XENGINE_MQCORE_DATABASE_PARAMENT;
9494
return false;
95-
}
96-
XCHAR tszSQLStatement[10240];
95+
}
96+
XCHAR tszSQLStatement[10240];
97+
XCHAR tszSQLCoder[8192];
98+
9799
memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
100+
memset(tszSQLCoder, '\0', sizeof(tszSQLCoder));
101+
102+
DataBase_MySQL_Coder(xhDBSQL, pSt_DBInfo->tszMsgBuffer, tszSQLCoder, &pSt_DBInfo->nMsgLen);
103+
__int64u nRet = _xstprintf(tszSQLStatement, _X("INSERT INTO `%s` (tszUserName,tszQueueName,nQueueSerial,nQueueGetTime,tszQueueLeftTime,tszQueuePublishTime,tszQueueData,nDataLen,nDataType,tszQueueCreateTime) VALUES('%s','%s',%lld,%lld,'%s','%s','"), pSt_DBInfo->tszQueueName, pSt_DBInfo->tszUserName, pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, pSt_DBInfo->nQueueGetTime, pSt_DBInfo->tszQueueLeftTime, pSt_DBInfo->tszQueuePublishTime);
104+
memcpy(tszSQLStatement + nRet, tszSQLCoder, pSt_DBInfo->nMsgLen);
105+
nRet += pSt_DBInfo->nMsgLen;
106+
107+
memset(tszSQLCoder, '\0', sizeof(tszSQLCoder));
108+
int nLen = _xstprintf(tszSQLCoder, _X("',%d,%d,now())"), pSt_DBInfo->nMsgLen, pSt_DBInfo->byMsgType);
109+
memcpy(tszSQLStatement + nRet, tszSQLCoder, nLen);
110+
nRet += nLen;
98111

99-
_xstprintf(tszSQLStatement, _X("INSERT INTO `%s` (tszUserName,tszQueueName,nQueueSerial,nQueueGetTime,tszQueueLeftTime,tszQueuePublishTime,tszQueueData,nDataLen,nDataType,tszQueueCreateTime) VALUES('%s','%s',%lld,%lld,'%s','%s','%s',%d,%d,now())"), pSt_DBInfo->tszQueueName, pSt_DBInfo->tszUserName, pSt_DBInfo->tszQueueName, pSt_DBInfo->nQueueSerial, pSt_DBInfo->nQueueGetTime, pSt_DBInfo->tszQueueLeftTime, pSt_DBInfo->tszQueuePublishTime, pSt_DBInfo->tszMsgBuffer, pSt_DBInfo->nMsgLen, pSt_DBInfo->byMsgType);
100-
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement))
112+
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement, &nRet))
101113
{
102114
DBModule_IsErrorOccur = true;
103115
DBModule_dwErrorCode = DataBase_GetLastError();
@@ -150,6 +162,7 @@ bool CDBModule_MQData::DBModule_MQData_Query(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo)
150162
return false;
151163
}
152164
XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable);
165+
XLONG* pInt_Length = DataBase_MySQL_GetLength(xhDBSQL, xhTable);
153166

154167
if (NULL != pptszResult[1])
155168
{
@@ -177,11 +190,12 @@ bool CDBModule_MQData::DBModule_MQData_Query(XENGINE_DBMESSAGEQUEUE* pSt_DBInfo)
177190
}
178191
if (NULL != pptszResult[7])
179192
{
180-
_tcsxcpy(pSt_DBInfo->tszMsgBuffer, pptszResult[7]);
193+
pSt_DBInfo->nMsgLen = pInt_Length[7];
194+
memcpy(pSt_DBInfo->tszMsgBuffer, pptszResult[7], pSt_DBInfo->nMsgLen);
181195
}
182196
if (NULL != pptszResult[8])
183197
{
184-
pSt_DBInfo->nMsgLen = _ttxoi(pptszResult[8]);
198+
//pSt_DBInfo->nMsgLen = _ttxoi(pptszResult[8]);
185199
}
186200
if (NULL != pptszResult[9])
187201
{
@@ -576,7 +590,7 @@ bool CDBModule_MQData::DBModule_MQData_CreateTable(LPCXSTR lpszQueueName)
576590
"`nQueueGetTime` bigint NOT NULL COMMENT '获取次数',"
577591
"`tszQueueLeftTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '过期时间',"
578592
"`tszQueuePublishTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发布时间',"
579-
"`tszQueueData` varchar(8192) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '保存数据',"
593+
"`tszQueueData` longblob NOT NULL COMMENT '保存数据',"
580594
"`nDataLen` int NOT NULL COMMENT '数据大小',"
581595
"`nDataType` tinyint NOT NULL COMMENT '数据类型',"
582596
"`tszQueueCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间',"

0 commit comments

Comments
 (0)