From efd5f69eec082d9e26d06d825217b1db0692cdbd Mon Sep 17 00:00:00 2001 From: Alexia23 Date: Wed, 14 Jan 2015 21:15:05 +0800 Subject: [PATCH] update about null is ok --- DBMS/DBMS/dbManage.cpp | 28 +++++++++++++++++++++------- DBMS/DBMS/orderDB/publisher | Bin 0 -> 8192 bytes 2 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 DBMS/DBMS/orderDB/publisher diff --git a/DBMS/DBMS/dbManage.cpp b/DBMS/DBMS/dbManage.cpp index e2f987d..14df5b6 100644 --- a/DBMS/DBMS/dbManage.cpp +++ b/DBMS/DBMS/dbManage.cpp @@ -152,11 +152,18 @@ bool DBManager::updateRecord(string tableName,BYTE **Value,string *colName,BYTE } } else if(col->xtype == VARCHAR_TYPE){ - string data(dataUtility::getbyte(dataPage->page->data,offset*recordLength+col->index,col->length)); string comData(dataUtility::getbyte((char*)Value[i], 0, (int)len[i])); - if (!dataUtility::stringOptstring(data, op[i], comData)){ - updateFlag = false; - break; + if (dataUtility::toUpper(comData).compare("NULL")==0) { + if ((int)((char)dataUtility::getbyte(dataPage->page->data, offset*recordLength+col->index-1, 1)[0]) == 0) { + updateFlag = false; + break; + } + } else { + string data(dataUtility::getbyte(dataPage->page->data,offset*recordLength+col->index,col->length)); + if (!dataUtility::stringOptstring(data, op[i], comData)){ + updateFlag = false; + break; + } } } } @@ -174,8 +181,15 @@ bool DBManager::updateRecord(string tableName,BYTE **Value,string *colName,BYTE delete[] temp; }else { //char* temp = new char[col->length-len[i]]; - dataUtility::bytefillbyte(dataPage->page->data, (unsigned char*)Value[i], offset*recordLength+col->index, len[i]); - dataPage->page->data[offset*recordLength+col->index+len[i]] = '\0'; + string comData(dataUtility::getbyte((char*)Value[i], 0, (int)len[i])); + if (dataUtility::toUpper(comData).compare("NULL")==0) + { + memset(dataPage->page->data+offset*recordLength+col->index-1, 1, 1); + dataPage->page->data[offset*recordLength+col->index] = '\0'; + } else { + dataUtility::bytefillbyte(dataPage->page->data, (unsigned char*)Value[i], offset*recordLength+col->index, len[i]); + dataPage->page->data[offset*recordLength+col->index+len[i]] = '\0'; + } //dataUtility::bytefillbyte(dataPage->page->data, (unsigned char*)temp, offset*recordLength+col->index+len[i], col->length-len[i]); //delete[] temp; } @@ -420,7 +434,6 @@ bool DBManager::deleteRecord(string tableName,BYTE **Value,string *colName,BYTE } } else if(col->xtype == VARCHAR_TYPE){ - string data(dataUtility::getbyte(dataPage->page->data,offset*recordLength+col->index,col->length)); string comData(dataUtility::getbyte((char*)Value[i], 0, (int)len[i])); if (dataUtility::toUpper(comData).compare("NULL")==0) { if ((int)((char)dataUtility::getbyte(dataPage->page->data, offset*recordLength+col->index-1, 1)[0]) == 0) { @@ -428,6 +441,7 @@ bool DBManager::deleteRecord(string tableName,BYTE **Value,string *colName,BYTE break; } } else { + string data(dataUtility::getbyte(dataPage->page->data,offset*recordLength+col->index,col->length)); if (!dataUtility::stringOptstring(data, op[i], comData)){ deleteFlag = false; break; diff --git a/DBMS/DBMS/orderDB/publisher b/DBMS/DBMS/orderDB/publisher new file mode 100644 index 0000000000000000000000000000000000000000..56c4ed6eaabb6d985666766549d3d8756ff991dd GIT binary patch literal 8192 zcmeIuu?>Sj5Cp(|s&M9FXaLaxPF^IRLb-GT*pf?liC`|eXjeN)a^&?+xu0xHtDm*i zeQh~AUHK(v`1gG~yOrG=GR