Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

тип данных Blob   Найти похожие ветки 

 
Вовка   (2002-04-18 11:16) [0]

В БД хранятся ссылки на массивы значений за определенное число,массив представляет из себя набор цифровых значений по двум параметрам снятым с датчика(ускорение и усилие).В табличке в поле ЗНАЧЕНИЕ записано только BLOB ,так вот подскажите программкой или примером как вытащить значения типа BLOB из БД в человеческом виде ,чобы можно было дальше с ними работать.


 
Reindeer Moss Eater   (2002-04-18 11:26) [1]

Нужно знать каким образом это значение записвали в blob.
Есть пример кода ?


 
Вовка   (2002-04-18 11:32) [2]

есть ,но на С


 
Reindeer Moss Eater   (2002-04-18 11:33) [3]

Так давай


 
Вовка   (2002-04-19 13:28) [4]

есть код пересчета массива в нормальный вид,массив пишется непосредственно с датчика (0-20)мА:

m_dAccPoints[i]=(double)m_nMinScaleAccValue+(m_nMaxScaleAccValue-m_nMinScaleAccValue)*((20.0/((1<<12)-1(wAcc[i]&0x0rfff)-4)/16);

wAcc -двух байтовый массив
12- разрядность АЦП
min
max-интервал датчика


 
Reindeer Moss Eater   (2002-04-19 13:30) [5]

Неважно что и как считается.
Мне важно как массив записан в блоб.


 
Вовка   (2002-04-22 10:04) [6]

держи код ,ели надо я подскажу чё и где (в делфи я пока еще плаваю)
часть1:
// Par.cpp: implementation of the CPar class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include <stdlib.h>
#include "Oracle.h"
#include "Par.h"


OCI_LDA* CPar::m_pLDA;
OCI_CURSOR CPar::m_cGetVal;
OCI_CURSOR CPar::m_cSetVal;
OCI_CURSOR CPar::m_cSetHis;
OCI_CURSOR CPar::m_cSetHisArray;
OCI_CURSOR CPar::m_cGetAtr;
OCI_CURSOR CPar::m_cSetStr;
OCI_CURSOR CPar::m_cSetNum;
OCI_CURSOR CPar::m_cSetSob;
OCI_CURSOR CPar::m_cGetDate;
OCI_CURSOR CPar::m_cGetType;
OCI_CURSOR CPar::m_cGetCtrlElmID;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPar::CPar()
{

}

CPar::~CPar()
{

}

void CPar::Cleanup()
{
m_cGetVal.close();
m_cSetVal.close();
m_cSetHis.close();
m_cSetHisArray.close();
m_cGetAtr.close();
m_cSetStr.close();
m_cSetNum.close();
m_cSetSob.close();
m_cGetDate.close();
m_cGetType.close();
m_cGetCtrlElmID.close();
}

void CPar::SetLDA(OCI_LDA *pLDA)
{
m_pLDA = pLDA;
}


int CPar::GetVal(int nID
,char* pszVal, int nValSize // возвращаемое значение параметра
,int* pElmID/* = NULL*/ // возвращаемый ид элемента
,double* pDblNum/* = NULL*/ // возвращаемое число
,char* pszStr/* = NULL*/, int nStrSize/* = 0*/ // возвращаемая строка
,int* pSobID/* = NULL*/) // возвращаемый ид события

{
static int nParID;
static int nElmID;
static char szVal[128];
static char szStr[128];
static double dblNum;
static int nSobID;

int rc;


if (pElmID)
*pElmID = 0;

if (pDblNum)
*pDblNum = 0.0;

if (pszStr)
*pszStr = "\0";

if (pSobID)
*pSobID = 0;

if (!pszVal || nValSize < 2)
return -1;

*pszVal = "\0";

if (nID < 1)
return -1;


nParID = nID;

for (int i = 0; i < 2; i++) {
if (!m_cGetVal.IsOpened()) {
m_cGetVal.open(m_pLDA);

m_cGetVal.parse(
"select distinct элм_элм_id, значение, число, строка, т_соб_т_соб_id"
" from параметры"
" where пар_id = :1");
m_cGetVal.defin(&nElmID,sizeof(nElmID), SQLT_INT);
m_cGetVal.defin(szVal, sizeof(szVal), SQLT_STR);
m_cGetVal.defin(&dblNum,sizeof(dblNum), SQLT_FLT);
m_cGetVal.defin(szStr, sizeof(szStr), SQLT_STR);
m_cGetVal.defin(&nSobID,sizeof(nSobID), SQLT_INT);

m_cGetVal.bndrn(1,&nParID,sizeof(nParID),SQLT_INT);
}

szVal[0] = szStr[0] = "\0";
nElmID = nSobID = 0;
dblNum = 0.0;

rc = m_cGetVal.exfet();

if (rc == 4 || rc < 0)
Sleep(100);


if (rc >= 0)
break;
else
m_cGetVal.close();
}

strncpy(pszVal, szVal, nValSize);
*(pszVal + nValSize - 1) = "\0";
// strcpy(pszVal, szVal);

if (pElmID)
*pElmID = nElmID;

if (pDblNum)
*pDblNum = dblNum;

if (pszStr) {
strncpy(pszStr, szStr, nStrSize);
*(pszStr + nStrSize - 1) = "\0";
// strcpy(pszStr, szStr);
}


if (pSobID)
*pSobID = nSobID;


return rc;
}


int CPar::GetAtr(int nID, int* pAtr)
{
static int nParID;
static int nAtr;

int rc;

if (!pAtr)
return -1;

*pAtr = 0;

if (nID < 1)
return -1;

nParID = nID;

for (int i = 0; i < 2; i++) {
if (!m_cGetAtr.IsOpened()) {
m_cGetAtr.open(m_pLDA);

m_cGetAtr.parse(
"select т_пар.атрибут"
" from типы_параметров т_пар, параметры пар"
" where пар.т_пар_т_пар_id = т_пар.т_пар_id"
" and пар.пар_id = :1");
m_cGetAtr.defin(&nAtr, sizeof(nAtr), SQLT_INT);

m_cGetAtr.bndrn(1, &nParID, sizeof(nParID), SQLT_INT);
}

nAtr = 0;

rc = m_cGetAtr.exfet();
if (rc >= 0)
break;
else
m_cGetAtr.close();
}

*pAtr = nAtr;

return rc;
}


>


 
Вовка   (2002-04-22 10:06) [7]

часть2:
int CPar::SetVal(int nID, char* pszVal, char* pszDate)
{
static int nParID;
static char szVal[128];
static char szDate[20];

int rc;

if (nID < 1)
return -1;

nParID = nID;
strcpy(szVal, pszVal);
strcpy(szDate,pszDate);

for (int i = 0; i < 2; i++) {
if (!m_cSetVal.IsOpened()) {
m_cSetVal.open(m_pLDA);

m_cSetVal.parse(
"update параметры set"
" значение = :1"
" ,дата = to_date(:2, "dd.mm.yyyy hh24:mi:ss")"
" where пар_id = :3");

m_cSetVal.bndrn(1, szVal, sizeof(szVal), SQLT_STR);
m_cSetVal.bndrn(2, szDate, sizeof(szDate),SQLT_STR);
m_cSetVal.bndrn(3, &nParID,sizeof(nParID),SQLT_INT);
}

rc = m_cSetVal.exec();
if (rc >= 0)
break;
else
m_cSetVal.close();
}

return rc;
}


int CPar::SetStr(int nID, char* pszStr)
{
static int nParID;
static char szStr[128];

int rc;

if (nID < 1)
return -1;

nParID = nID;
strcpy(szStr, pszStr);

for (int i = 0; i < 2; i++) {
if (!m_cSetStr.IsOpened()) {
m_cSetStr.open(m_pLDA);

m_cSetStr.parse(
"update параметры set"
" строка = :1"
" where пар_id = :2");

m_cSetStr.bndrn(1, szStr, sizeof(szStr), SQLT_STR);
m_cSetStr.bndrn(2, &nParID,sizeof(nParID),SQLT_INT);
}

rc = m_cSetStr.exec();
if (rc >= 0)
break;
else
m_cSetStr.close();
}

return rc;
}


int CPar::SetNum(int nID, double dblValue)
{
static int nParID;
static double val;

int rc;

if (nID < 1)
return -1;

nParID = nID;
val = dblValue;

for (int i = 0; i < 2; i++) {
if (!m_cSetNum.IsOpened()) {
m_cSetNum.open(m_pLDA);

m_cSetNum.parse(
"update параметры set"
" число = :1"
" where пар_id = :2");

m_cSetNum.bndrn(1, &val, sizeof(val), SQLT_FLT);
m_cSetNum.bndrn(2, &nParID,sizeof(nParID),SQLT_INT);
}

rc = m_cSetNum.exec();
if (rc >= 0)
break;
else
m_cSetNum.close();
}

return rc;
}


int CPar::SetSob(int nID, int nSobID)
{
static int nParID;
static int nTypeSobID;

int rc;

if (nID < 1)
return -1;

nParID = nID;
nTypeSobID = nSobID;

for (int i = 0; i < 2; i++) {
if (!m_cSetSob.IsOpened()) {
m_cSetSob.open(m_pLDA);

m_cSetSob.parse(
"declare"
" тип_события number;"
" begin"
" тип_события := :1;"
" if тип_события = 0 then"
" тип_события := NULL;"
" end if;"
""
" update параметры set"
" т_соб_т_соб_id = тип_события"
" where пар_id = :2;"
" end;");

m_cSetSob.bndrn(1, &nTypeSobID,sizeof(nTypeSobID),SQLT_INT);
m_cSetSob.bndrn(2, &nParID, sizeof(nParID), SQLT_INT);
}

rc = m_cSetSob.exec();
if (rc >= 0)
break;
else
m_cSetSob.close();
}

return rc;
}


int CPar::GetDate(int nID, char* pszDate)
{
static int nParID;
static char szDate[20];

int rc;

if (!pszDate)
return -1;

*pszDate = "\0";

if (nID < 1)
return -1;

nParID = nID;

for (int i = 0; i < 2; i++) {
if (!m_cGetDate.IsOpened()) {
m_cGetDate.open(m_pLDA);

m_cGetDate.parse(
"select to_char(дата, "dd.mm.yyyy hh24:mi:ss")"
" from параметры"
" where пар_id = :1");
m_cGetDate.defin(szDate, sizeof(szDate), SQLT_STR);

m_cGetDate.bndrn(1, &nParID, sizeof(nParID), SQLT_INT);
}

szDate[0] = "\0";

rc = m_cGetDate.exfet();
if (rc >= 0)
break;
else
m_cGetDate.close();
}

strcpy(pszDate, szDate);

return rc;
}




 
Вовка   (2002-04-22 10:07) [8]

часть3:
int CPar::GetType(int nID, char* pszType)
{
static int nParID;
static char szType[128];

int rc;

if (!pszType)
return -1;

*pszType = "\0";

if (nID < 1)
return -1;

nParID = nID;

for (int i = 0; i < 2; i++) {
if (!m_cGetType.IsOpened()) {
m_cGetType.open(m_pLDA);

m_cGetType.parse(
"select distinct т_пар.наименование"
" from параметры пар, типы_параметров т_пар"
" where пар.т_пар_т_пар_id = т_пар.т_пар_id"
" and пар_id = :1");
m_cGetType.defin(szType, sizeof(szType), SQLT_STR);

m_cGetType.bndrn(1, &nParID, sizeof(nParID), SQLT_INT);
}

szType[0] = "\0";

rc = m_cGetType.exfet();
if (rc >= 0)
break;
else
m_cGetType.close();
}

strcpy(pszType, szType);

return rc;
}


int CPar::SetHis(int nID)
{
static int nParID;

int rc;

if (nID < 1)
return -1;

nParID = nID;

for (int i = 0; i < 2; i++) {
if (!m_cSetHis.IsOpened()) {
m_cSetHis.open(m_pLDA);

m_cSetHis.parse(
"insert into история"
"(ист_id"
",пар_пар_id"
",т_соб_т_соб_id"
",значение"
",число"
",строка"
",дата) "
"select"
" ист_seq.nextval"
",пар_id"
",т_соб_т_соб_id"
",значение"
",число"
",строка"
",дата"
" from параметры"
" where пар_id = :1");
m_cSetHis.bndrn(1, &nParID, sizeof(nParID), SQLT_INT);
}

rc = m_cSetHis.exec();
if (rc >= 0)
break;
else
m_cSetHis.close();
}

return rc;
}


int CPar::SetHisArray(int nID, unsigned char* pArray, int len, char* pszDate)
{
static int nParID;
static char szDate[20];
static unsigned char* pBuf;
static int nBufLen;

int rc;

if (nID < 1 || !pArray)
return -1;

nParID = nID;
pBuf = pArray;
nBufLen = len;
strcpy(szDate,pszDate);

for (int i = 0; i < 2; i++) {
if (!m_cSetHisArray.IsOpened()) {
m_cSetHisArray.open(m_pLDA);
//*запись
m_cSetHisArray.parse(
"insert into массивы"
"(мас_id"
",пар_пар_id"
",значение"
",длина"
",дата) "
"values"
"(мас_seq.nextval"
",:1"
",:2"
",:3"
",to_date(:4, "dd.mm.yyyy hh24:mi:ss"))");

m_cSetHisArray.bndrn(1, &nParID, sizeof(nParID), SQLT_INT);
m_cSetHisArray.bndrn(3, &nBufLen,sizeof(nBufLen),SQLT_INT);
m_cSetHisArray.bndrn(4, szDate, sizeof(szDate), SQLT_STR);
}

// т.к. nBufLen может быть различным
m_cSetHisArray.bndrn(2, pBuf, nBufLen, SQLT_LBI);

rc = m_cSetHisArray.exec();
if (rc >= 0)
break;
else
m_cSetHisArray.close();
}

return rc;
}


int CPar::GetCtrlElmID(int nID, int* pElmID)
{
static char szElmID[64];
static int nCtrlElmID;
int rc;

if (!pElmID)
return -1;

*pElmID = 0;

if (nID < 1)
return -1;

itoa(nID, szElmID, 10);

for (int i = 0; i < 2; i++) {
if (!m_cGetCtrlElmID.IsOpened()) {
m_cGetCtrlElmID.open(m_pLDA);

m_cGetCtrlElmID.parse(
"select элм_элм_id"
" from параметры_вт"
" where тип = "Ид параметра контроля""
" and значение = :1");
m_cGetCtrlElmID.defin(&nCtrlElmID, sizeof(nCtrlElmID), SQLT_INT);

m_cGetCtrlElmID.bndrn(1, szElmID, sizeof(szElmID), SQLT_STR);
}

nCtrlElmID = 0;
rc = m_cGetCtrlElmID.exfet();

if (rc >= 0)
break;
else
m_cGetCtrlElmID.close();
}

*pElmID = nCtrlElmID;

return rc;
}
</CODE



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
1-50004
Ronin
2002-04-30 02:08
2002.05.16
Как добавить ссылку на сайт в hlp файле?


3-49866
Dorosh
2002-04-15 15:23
2002.05.16
Polaris DbTreeView


4-50160
Дмитрий2
2002-03-14 10:18
2002.05.16
Отладка COM-серверов


3-49873
AlexL
2002-04-19 18:00
2002.05.16
Какую СУБД выбрать


3-49889
Надежда
2002-04-19 14:03
2002.05.16
Помогите с поиском компонент