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

📄 drop_table.cpp

📁 小型数据库源代码较多
💻 CPP
字号:

#include "min.h"

void sql::drop_table( )
{
		
    try{		
		cin >> command;
		filename.erase();
		for(int i=0; command[i]!=';'&&command[i]!='\0'; i++)
			filename+=command[i];
	   	Table* t = tabexist();
		if ( t==NULL )
			throw 2;
        string temp=filename;
		// 文件是否在缓存中		
		filename.append(".dtb");
		for( page = 0; page < 3; page++)
		if(!filename.compare(bufname[page]))
			break;
	
		//文件在缓存中
		if ( page != 3 )
		{
			for( int j=0; j<sbf ; j++)
				buf[page][j] = '\0';
			for( j = 0; j < 3; j++)
				if( buff[j] > buff[page] ) 
					buff[j]--;
			buff[page] = 2;//////////////////////////////////////
			modify[page] = 0;
			bufname[page].erase();
		}

		//删表
		Table* table = t->next;
		t->next = table->next;
		Col* col;
		Col* tempc;
		col = table->collist;
		for(; col->next; )
		{
			tempc = col;
			col = col->next;
			if ( col->indexname.compare(""))
			{
				char del[50] = "del ";
				string indexname;
				indexname = table->name + "_"+ col->indexname + ".idx";
				strcat( del,indexname.c_str());		
				system ( del );
			}
			delete tempc;						
		}
		delete col;
		delete table;
		char del[50] = "del ";
		strcat( del,filename.c_str());		
			ifstream test(filename.c_str());
        if(!test)
		{	
			cout<<"表 <"+temp+"> 已删除!"<<endl;
			Log("表 <"+temp+"> 已删除!");//pp
			return;
		}
////////////////////////////////////////////////////////////
		test.close();
		system ( del );
        cout<<"表 <"+temp+"> 已删除!"<<endl;
		Log("表 <"+temp+"> 已删除!");//pp
		
		
		
	}
        	catch ( int i )
		{
			switch(i)
			{
			case 1:	cout << "语法错误!" << endl;
					break;
			case 2:	cout << "表不存在!" << endl;
					break;
			}
			char a[50];
			cin.getline( a, 50 );
          	Log("删除表失败!");//pp
		}

		
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -