⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insert.c

📁 linux 下用c++ 开发的一个小型数据库系统
💻 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 + -