📄 insert.c
字号:
#include "catalog.h"#include "query.h"/* * Inserts a record into the specified relation. * * Returns: * OK on success * an error code otherwise */const Status QU_Insert(const string & relation, const int attrCnt, const attrInfo attrList[]){// part 5 InsertFileScan *ifs ; RID rid ; Record rec ; char *mydata ; int len = 0 ; Status status ; RelDesc rds ; AttrDesc ads ; int i, n, myattrCnt ; string astr ; int intval ; float flval ; AttrDesc *attrs ; int chklast ; status = relCat->getInfo( relation.c_str(), rds) ; if (status != OK) return status ; astr.append("begin") ; for( i = 0; i < attrCnt; i++){ astr.erase(1) ; n = strlen(attrList[i].attrName) ; astr.replace( 0, n, attrList[i].attrName) ; if((status = attrCat->getInfo( relation, astr, ads)) != OK) return status ; } attrCat->getRelInfo( relation, myattrCnt, attrs) ; len = 0 ; for ( i = 0; i < myattrCnt; i++) len = len + attrs[i].attrLen ; astr.append("insert") ; mydata = new char[len] ; for (i = 0; i < len; i++) mydata[i] = 0; for ( i = 0; i < myattrCnt; i++){ for (int t = 0; t < attrCnt; t++){ if (strcmp(attrs[i].attrName,attrList[t].attrName) == 0){ // astr.erase(1) ; // n = strlen(attrList[i].attrName) ; // astr.replace( 0, n, attrList[i].attrName) ; // attrCat->getInfo( relation, astr, ads) ; if ((Datatype)attrs[i].attrType == INTEGER){ intval = atoi((char *)attrList[t].attrValue) ; memcpy( mydata + attrs[i].attrOffset, &intval, attrs[i].attrLen) ; break ; } if ((Datatype)attrs[i].attrType == FLOAT){ flval = (float)atof((char *)attrList[t].attrValue) ; memcpy( mydata + attrs[i].attrOffset, &flval, attrs[i].attrLen) ; break ; } memcpy( mydata + attrs[i].attrOffset,attrList[t].attrValue, attrs[i].attrLen) ; break ; } } } rec.data = mydata ; rec.length = len ; ifs = new InsertFileScan( relation, status) ; if (status != OK){ delete [] mydata ; return status ; } if((status = ifs->insertRecord( rec, rid)) != OK){ delete [] mydata ; delete ifs ; return status ; } printf("\n Table (%s) 1 Record Insert Success! \n", relation.c_str()) ; delete [] mydata ; delete ifs ; return OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -