Sqlite3数据块以BLOB字段存储二进制数据块
来源:互联网 发布:a卡游戏优化 编辑:程序博客网 时间:2024/04/29 19:58
int CppSQLite3DB::execDMLBlob(const char* szSQL,const char* blob1,const char* blob2,const char* blob3,const char* blob4,int length){checkDB();char* szError=0;const char *error;sqlite3_stmt *stmt = 0;int nRet = sqlite3_prepare(mpDB, szSQL,strlen(szSQL), &stmt, &error);if (nRet != SQLITE_OK){//获取SQLITE错误}//SQL语句中的下面四个参数绑定到数据块中intindex;index = sqlite3_bind_parameter_index(stmt, ":aaa");nRet = sqlite3_bind_blob(stmt, index, blob1, length, NULL);index = sqlite3_bind_parameter_index(stmt, ":bbb");nRet = sqlite3_bind_blob(stmt, index, blob2, length, NULL);index = sqlite3_bind_parameter_index(stmt, ":ccc");nRet = sqlite3_bind_blob(stmt, index, blob3, length, NULL);index = sqlite3_bind_parameter_index(stmt, ":ddd");nRet = sqlite3_bind_blob(stmt, index, blob4, length, NULL);if (nRet != SQLITE_OK){//获取SQLITE错误,打印出来}//执行SQL语句nRet = sqlite3_step(stmt);if (nRet != SQLITE_DONE){//获取SQLITE错误,打印出来}sqlite3_finalize(stmt); return SQLITE_OK;}
MTK::CMTKSqliteEXsqliteDBInsert;//自己封装后的sqlite3类sqliteDBInsert.open(filePathDB);char szCommand[MAX_BUF_LEN] = {0};memset(szCommand, 0, MAX_BUF_LEN);sprintf(szCommand, "insert into T_RIM_RTM_SAMPLE_DATA values (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20)");sqliteDBInsert.prepare_v2(szCommand);//当游标移动到文件尾时说明解析完毕while(m_curPosition != m_totalByte){//解析一次m_curPosition往后移动一次//解析内存数据,每次解析1000条数据AnalyzeBinData(curFilePahtName);//开启事务sqliteDBInsert.execDML("begin transaction;");//解析一次存一次vector<DataAcquisiton>::iterator iter;for(iter=m_vecCurShowData.begin();iter!=m_vecCurShowData.end();iter++){DataAcquisitontempdataAcq;tempdataAcq = *iter;sqliteDBInsert.bind(1, (__int64)tempdataAcq.head);sqliteDBInsert.bind(2, (int)tempdataAcq.moniStation);sqliteDBInsert.bind(3, (int)tempdataAcq.devParamSetAndAnt);sqliteDBInsert.bind(4, (int)tempdataAcq.moniTimeYear);sqliteDBInsert.bind(5, (int)tempdataAcq.moniTimeMouth);sqliteDBInsert.bind(6, (int)tempdataAcq.moniTimeDay);sqliteDBInsert.bind(7, (int)tempdataAcq.starMoniTimeHour);sqliteDBInsert.bind(8, (int)tempdataAcq.starMoniTimeMinu);sqliteDBInsert.bind(9, (int)tempdataAcq.starMoniTimeSeco);sqliteDBInsert.bind(10,(int)tempdataAcq.starMoniTimeMilli);sqliteDBInsert.bind(11,tempdataAcq.longitude);sqliteDBInsert.bind(12,tempdataAcq.latitude);sqliteDBInsert.bind(13,(DOUBLE)tempdataAcq.altitude);sqliteDBInsert.bind(14,(__int64)tempdataAcq.startFrequency);sqliteDBInsert.bind(15,(int)tempdataAcq.step);sqliteDBInsert.bind(16,(int)tempdataAcq.frePointNum);int totallength = tempdataAcq.frePointNum * 2;sqliteDBInsert.bind(18,(const UCHAR*)tempdataAcq.pField,totallength);//bin存储的为场强值sqliteDBInsert.bind(17,(const UCHAR*)tempdataAcq.pdata,totallength);sqliteDBInsert.bind(19,(const UCHAR*)tempdataAcq.pGate,totallength);sqliteDBInsert.bind(20,(const UCHAR*)tempdataAcq.pOcc,totallength);if (SQLITE_DONE != (sqliteDBInsert.step())) break;if (SQLITE_OK != (sqliteDBInsert.reset())) break;}//提交事务sqliteDBInsert.execDML("commit transaction;");//释放内存vector<DataAcquisiton>::iterator iterFree;for(iterFree=m_vecCurShowData.begin();iterFree!=m_vecCurShowData.end();iterFree++){DataAcquisitontempdataAcqFre;tempdataAcqFre = *iterFree;delete [] tempdataAcqFre.pdata;tempdataAcqFre.pdata = NULL;delete [] tempdataAcqFre.pField;tempdataAcqFre.pField = NULL;delete [] tempdataAcqFre.pGate;tempdataAcqFre.pGate = NULL;delete [] tempdataAcqFre.pOcc;tempdataAcqFre.pOcc = NULL;}if (m_curPosition<=m_totalByte){float posTemp = (float)m_curPosition/m_totalByte;int pos = (int)(posTemp*100);//CString str;//str.Format("%d%%",pos);//m_listCtrl.SetItemText(index,2,str);::PostMessage(m_pParent->m_hWnd, UPDATAUI, (WPARAM)m_index, (LPARAM)pos);//m_progressCtr.SetPos(pos);}}//结束sqliteDBInsert.finalPrepare();sqliteDBInsert.close();
0 0
- Sqlite3数据块以BLOB字段存储二进制数据块
- SQLITE3 读写二进制字段blob
- 数据块
- 数据块
- android操作sqlite3的blob字段,显示数据中的图片
- 以数据块的形式读写文件
- C、C++写二进制数据到mysql的Blob字段
- C语言写二进制数据到mysql的Blob字段
- C、C++写二进制数据到mysql的Blob字段
- python往mysql的blob字段写入二进制数据
- C语言写二进制数据到mysql的Blob字段
- Oracle逻辑存储结构---(一) 数据块
- Sqlite3 操作二进制数据
- sqlite3 读写二进制数据
- Oracle 11g PL/SQL程序块,存储图片等BLOB字段类型的列PL/
- 超级块 i节点 数据块 目录块 间接块
- 超级块 i节点 数据块 目录块 间接块
- 超级块 i节点 数据块 目录块 间接块
- CentOS7中安装Hadoop2.6.4,能够正常启动,但datanode的数目为0的解决方法
- centos crontab 没有立即生效原因
- Eclipse代码注释时@author默认值Administrator修改
- HTTP请求报文和响应报文
- SharePoint之JavaScript客户端对象模型
- Sqlite3数据块以BLOB字段存储二进制数据块
- SpringMVC拦截器的使用和配置
- Deep Learning for Computer Vision with MATLAB and cuDNN(译文)
- js实现琴弦效果(兼容IE7)
- xcodebuild 打包
- ios头文件搜索路径教程
- Mobile_Why App Localization Matters
- 车牌识别
- 修改数据库编码 - MySQL