亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? recordmanager.java

?? 用JAVA實現的miniSQL
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
import java.io.*;
import java.util.*;
public class RecordManager {
    BufferManager buffer;
    IndexManager indexmanager;
    public RecordManager(BufferManager br, IndexManager im) {
    	buffer = br;
    	indexmanager = im;
    }
    public boolean getRecord(Interpreter cmd){
    	long total=0; //總個多少記錄
    	long blocknumber=0;//總共多少個塊
    	int num=0;//每個塊有多少記錄
    	int length=0; //每條記錄的長度
    	long freepos=0;
    	int current=0;
    	long count = 0;//查詢的結果數
    	try{
    	    RandomAccessFile recordfile = new RandomAccessFile(new File(cmd.table),"r");
    		total = recordfile.readLong();
    		blocknumber = recordfile.readLong();
    		length = recordfile.readInt();
    		num = recordfile.readInt();
    		freepos = recordfile.readLong();
    		recordfile.close();
    	}catch (Exception e){
    		System.out.println("RecordManager + getRecord + 1");
    		return false;
    	}
    	if(cmd.opnumber==0){
    		for(int i=0;i<blocknumber; i++){
    			buffer.getBlock(new File(cmd.table), i,1024);
    			Block selectb = buffer.list.getFirst();
    			current = 0;
    			for(int j=0; j< num;j++){
    				
    				selectb.seek(current);
    				if(selectb.readBoolean()){
    					count++;
    					if(count==1){
    						for(int m=0; m<cmd.attnumber ;m++){
    						    System.out.print(cmd.attribute[m]);
    						    System.out.print("\t");
    						}
    						System.out.print("\n");
    					}
    					for(int m=0; m<cmd.attnumber ;m++){
    			          if(cmd.atttype[m]==1){
    				          selectb.read();
    				          System.out.print(selectb.readInt());
    				          System.out.print("\t");
    			          }
    			          else if(cmd.atttype[m]==2){
    				          selectb.read();
    				          System.out.print(selectb.readFloat());
    				          System.out.print("\t");
    			          }
    			          else if(cmd.atttype[m]==3){
    				          int len = selectb.read()*2;
    				          byte[] name = new byte[len];
    				          selectb.read(name,cmd.attlength[m]);
    				          try{
    				          	System.out.print(new String(name, "UTF16"));
    				          	System.out.print("\t");
    				          }catch(Exception e){
    				          	  System.out.println("RecordManager + getRecord + 2");
    	                          return false;
    				          }
    				          
    			          }
    			          
    		           }
    		           System.out.print("\n");
    		           
    				}
    			    current = current + length;
    			}
    		}
    		System.out.println("查詢結果個數為: "+count); 
    		return true;
    	}
    	else if(cmd.opnumber ==1&&cmd.opcode[0]==1){
    		int th=-1;
    		for(int i=0; i<cmd.attnumber;i++)
    			if(cmd.opatt[0].equalsIgnoreCase(cmd.attribute[i])){
    				th = i;
    				break;
    			}
    		if(cmd.attindex[th]!=null){
    			long recordpos=-1;
    			if(cmd.atttype[th]==1)
    			    recordpos = indexmanager.getAddress(cmd.attindex[th], new Keyword(Integer.parseInt(cmd.op2[0])));
    			else if(cmd.atttype[th]==2)
    				recordpos = indexmanager.getAddress(cmd.attindex[th], new Keyword(Float.parseFloat(cmd.op2[0])));
    			else if(cmd.atttype[th]==3)
    				recordpos = indexmanager.getAddress(cmd.attindex[th], new Keyword(cmd.op2[0]));
                if(recordpos==-1){
                	System.out.println("查詢結果為空");
                	return true;
                }
                buffer.getBlock(new File(cmd.table),(recordpos-1024)/4096, 1024);
                Block selectb = buffer.list.getFirst();
                int offset = (int)((recordpos-1024)%4096);
                selectb.seek(offset);
                if(selectb.readBoolean()){
    				for(int m=0; m<cmd.attnumber ;m++){
    					System.out.print(cmd.attribute[m]);
    					System.out.print("\t");
    				}
    					System.out.print("\n");
    			}
    			for(int m=0; m<cmd.attnumber ;m++){
    			    if(cmd.atttype[m]==1){
    				    selectb.read();
    				    System.out.print(selectb.readInt());
    				    System.out.print("\t");
    			    }
    			    else if(cmd.atttype[m]==2){
    				    selectb.read();
    				    System.out.print(selectb.readFloat());
    				    System.out.print("\t");
    			    }
    			    else if(cmd.atttype[m]==3){
    				    int len = selectb.read()*2;
    				    byte[] name = new byte[len];
    				    selectb.read(name,cmd.attlength[m]);
    				    try{
    				        System.out.print(new String(name, "UTF16"));
    				        System.out.print("\t");
    				    }catch(Exception e){
    				        System.out.println("RecordManager + getRecord + 2");
    	                    return false;
    				    }
    				          
    			    }
    			          
    		     }
    		     System.out.print("\n");
    		}
    		else{
    			for(int i=0;i<blocknumber; i++){
        			buffer.getBlock(new File(cmd.table), i,1024);
        			Block selectb = buffer.list.getFirst();
        			current = 0;
        			for(int j=0; j< num;j++){
        				selectb.seek(current);
        				if(selectb.readBoolean()){
        					String[] entry = new String[cmd.attnumber];
        					for(int m=0; m<cmd.attnumber ;m++){
        			          if(cmd.atttype[m]==1){
        				          selectb.read();
        				          entry[m]=String.valueOf(selectb.readInt());
        			          }
        			          else if(cmd.atttype[m]==2){
        				          selectb.read();
        				          entry[m]=String.valueOf(selectb.readFloat());
        			          }
        			          else if(cmd.atttype[m]==3){
        				          int len = selectb.read()*2;
        				          byte[] name = new byte[len];
        				          selectb.read(name,cmd.attlength[m]);
        				          try{
        				          	 entry[m]=new String(name, "UTF16");
        				          }catch(Exception e){
        				        	  System.out.println("RecordManager + getRecord + 3");
        				        	  return false;
        				          }
        			          }
        					}
        			          boolean correct = false;
        			          switch(cmd.atttype[th]){
        			              case 1:{
        			            	  correct = Integer.parseInt(entry[th])== Integer.parseInt(cmd.op2[0]);
        			            	  break;
        			              }
        			              case 2:{
        			            	  correct = Float.parseFloat(entry[th])== Float.parseFloat(cmd.op2[0]);
        			            	  break;
        			              }
        			              case 3:{
        			            	  correct = entry[th].equals(cmd.op2[0]);
        			            	  break;
        			              }
        			              default:
        			            	  break;
        			          }
        			          if(correct){
        			        	  count++;
        			        	  if(count==1){
              						for(int m=0; m<cmd.attnumber ;m++){
              						    System.out.print(cmd.attribute[m]);
              						    System.out.print("\t");
              						}
              						System.out.print("\n");
              					}
        			        	  for(int q=0;q<cmd.attnumber;q++)
        			        	      System.out.print(entry[q]+"\t");
        			        	  System.out.print("\n");
        			          }
        		           }
        		           current = current + length;
        				}
        			}
        		System.out.println("查詢結果個數為: "+count); 
        		return true;
    		}
    	}
    	else if(cmd.opnumber==1&&cmd.opcode[0]==2){
    		int th=-1;
    		for(int i=0; i<cmd.attnumber;i++)
    			if(cmd.opatt[0].equalsIgnoreCase(cmd.attribute[i])){
    				th = i;
    				break;
    			}
    		for(int i=0;i<blocknumber; i++){
        		buffer.getBlock(new File(cmd.table), i,1024);
        		Block selectb = buffer.list.getFirst();
        		current = 0;
        		for(int j=0; j< num;j++){
        			selectb.seek(current);
        			if(selectb.readBoolean()){
        				String[] entry = new String[cmd.attnumber];
        				for(int m=0; m<cmd.attnumber ;m++){
        			        if(cmd.atttype[m]==1){
        				        selectb.read();
        				         entry[m]=String.valueOf(selectb.readInt());
        			        }
        			        else if(cmd.atttype[m]==2){
        				        selectb.read();
        				        entry[m]=String.valueOf(selectb.readFloat());
        			          }
        			        else if(cmd.atttype[m]==3){
        				        int len = selectb.read()*2;
        				        byte[] name = new byte[len];
        				        selectb.read(name,cmd.attlength[m]);
        				        try{
        				            entry[m]=new String(name, "UTF16");
        				        }catch(Exception e){
        				            System.out.println("RecordManager + getRecord + 3");
        				            return false;
        				        }
        			         }
        				}
        			         boolean correct = false;
        			         switch(cmd.atttype[th]){
        			          case 1:{
        			              correct = Integer.parseInt(entry[th])!= Integer.parseInt(cmd.op2[0]);
        			              break;
        			          }
        			          case 2:{
        			              correct = Float.parseFloat(entry[th])!= Float.parseFloat(cmd.op2[0]);
        			              break;
        			          }
        			          case 3:{
        			              correct = !entry[th].equals(cmd.op2[0]);
        			              break;
        			          }
        			          default:
        			              break;
        			          }
        			         if(correct){
        			            count++;
        	        			if(count==1){
        	        				for(int q=0; q<cmd.attnumber ;q++){
        	        					System.out.print(cmd.attribute[q]);
        	        					System.out.print("\t");
        	        				}
        	        				System.out.print("\n");
        	        			}
        			            for(int q=0;q<cmd.attnumber;q++)
        			        	   System.out.print(entry[q]+"\t");
        			            System.out.print("\n");
        			         }
        		           }
        			    current = current + length;
        				}
        			}
        		System.out.println("查詢結果個數為: "+count); 
        		return true;
    	}
    	
    	else if(cmd.opnumber == 1){
    		int th=-1;
    		for(int i=0; i<cmd.attnumber;i++)
    			if(cmd.opatt[0].equalsIgnoreCase(cmd.attribute[i])){
    				th = i;
    				break;
    			}
    	    if(cmd.attindex[th]!=null){
    	    	LinkedList<Long> list = getAddress(cmd.attindex[th], cmd.op2[0],cmd.atttype[th], cmd.opcode[0]);
    	    	if(list.size()>0){
    	    		for(int m=0; m<cmd.attnumber ;m++){
    					System.out.print(cmd.attribute[m]);
    					System.out.print("\t");
    				}
    					System.out.print("\n");
    	    	}
    	    	for(int j= 0 ; j< list.size();j++)
    	    	     getaddressRecord(cmd, list.get(j).longValue());
    	    	System.out.println("查詢結果個數為: "+list.size()); 
    	    	return true;
    	    }
    	    else{
    	    	getLine(cmd);
    	    }
    	}
    	else if(cmd.opnumber == 2&&cmd.opatt[0].equals(cmd.opatt[1])){
    		int th=-1;
    		for(int i=0; i<cmd.attnumber;i++)
    			if(cmd.opatt[0].equalsIgnoreCase(cmd.attribute[i])){
    				th = i;
    				break;
    			}
    		if(cmd.attindex[th]!=null){
    			if((cmd.opcode[0]==3&&cmd.opcode[1]==4)||(cmd.opcode[0]==4&&cmd.opcode[1]==3)||(cmd.opcode[0]==3&&cmd.opcode[1]==6)||(cmd.opcode[0]==6&&cmd.opcode[1]==3)||(cmd.opcode[0]==5&&cmd.opcode[1]==4)||(cmd.opcode[0]==4&&cmd.opcode[1]==5)||(cmd.opcode[0]==6&&cmd.opcode[1]==5)||(cmd.opcode[0]==5&&cmd.opcode[1]==6)){
    				LinkedList<Long> list = getAddressB(cmd.attindex[th], cmd.op2[0], cmd.op2[1], cmd.atttype[th], cmd.opcode[0], cmd.opcode[1]);
    				if(list.size()>0){
    					for(int q=0;q<cmd.attnumber;q++)
			        	     System.out.print(cmd.attribute[q]+"\t");
			        	System.out.print("\n");
    				}
    				for(int j=0;j<list.size();j++){
    					getaddressRecord(cmd, list.get(j).longValue());
    				}
    				System.out.println("查詢結果個數為: "+list.size()); 
        	    	return true;
    			}
    			else{
    				getLine(cmd);
    			}
    		}
    		else{
    			getLine(cmd);
    		}
    	}
    	else{
    		getLine(cmd);
    	}
    	return true;
    }
    public void getLine(Interpreter cmd){
    	long total=0; //總個多少記錄
    	long blocknumber=0;//總共多少個塊
    	int num=0;//每個塊有多少記錄
    	int length=0; //每條記錄的長度
    	long freepos=0;
    	int current=0;
    	long count = 0;//查詢的結果數
    	try{
    	    RandomAccessFile recordfile = new RandomAccessFile(new File(cmd.table),"r");
    		total = recordfile.readLong();
    		blocknumber = recordfile.readLong();
    		length = recordfile.readInt();
    		num = recordfile.readInt();
    		freepos = recordfile.readLong();
    		recordfile.close();
    	}catch (Exception e){
    		System.out.println("RecordManager + getLine + 1");
    	}
		for(int i=0;i<blocknumber; i++){
			buffer.getBlock(new File(cmd.table), i,1024);
			Block selectb = buffer.list.getFirst();
			current = 0;
			for(int j=0; j< num;j++){
				selectb.seek(current);
				if(selectb.readBoolean()){
					String[] entry = new String[cmd.attnumber];
					for(int m=0; m<cmd.attnumber ;m++){
			          if(cmd.atttype[m]==1){
				          selectb.read();
				          entry[m]=String.valueOf(selectb.readInt());
			          }
			          else if(cmd.atttype[m]==2){
				          selectb.read();
				          entry[m]=String.valueOf(selectb.readFloat());
			          }
			          else if(cmd.atttype[m]==3){
				          int len = selectb.read()*2;
				          byte[] name = new byte[len];
				          selectb.read(name,cmd.attlength[m]);
				          try{
				          	 entry[m]=new String(name, "UTF16");
				          }catch(Exception e){
				        	  System.out.println("RecordManager + getLine + 3");
				          }
			          }
					}
			          boolean correct = true;
			          for(int ii=0; ii<cmd.opnumber; ii++){
			        	  int th=-1;
			      		  for(int q=0; q<cmd.attnumber;q++)
			      			if(cmd.opatt[ii].equalsIgnoreCase(cmd.attribute[q])){
			      				th = q;
			      				break;
			      			}
			      		  correct = correct&&recordright(entry[th], cmd.op2[ii], cmd.atttype[th], cmd.opcode[ii]);
			          }
			          if(correct){
			        	  count++;
			        	  if(count==1){
								for(int m=0; m<cmd.attnumber ;m++){
								    System.out.print(cmd.attribute[m]);
								    System.out.print("\t");
								}
								System.out.print("\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久| 亚洲欧美自拍偷拍| 欧美三级视频在线| 福利电影一区二区| 美女高潮久久久| 丝瓜av网站精品一区二区| 日本一区二区免费在线| 91精品国产欧美一区二区成人| 成人午夜在线视频| 日本麻豆一区二区三区视频| 亚洲精品视频一区| 欧美国产日韩精品免费观看| 欧美白人最猛性xxxxx69交| 欧美日韩中文字幕精品| 91香蕉视频mp4| 91影视在线播放| 97久久精品人人爽人人爽蜜臀| 成人中文字幕电影| 国产不卡在线播放| 国产成人精品免费一区二区| 精品无码三级在线观看视频| 强制捆绑调教一区二区| 韩国精品在线观看| 国产成人在线网站| 成人一区在线观看| 99视频一区二区| 91成人免费网站| 88在线观看91蜜桃国自产| 在线播放91灌醉迷j高跟美女 | 久久精品夜夜夜夜久久| 国产精品毛片大码女人| 亚洲一区在线免费观看| 日本在线不卡一区| 成人av资源在线观看| 91久久久免费一区二区| 欧美色网站导航| 久久久久久夜精品精品免费| 国产精品素人视频| 午夜精品久久久久久久99水蜜桃| 亚洲国产va精品久久久不卡综合| 奇米色一区二区三区四区| 丰满白嫩尤物一区二区| 91免费观看国产| 久久综合九色综合97婷婷女人| 国产亚洲美州欧州综合国| 亚洲一区二区3| 成人一区二区三区中文字幕| 欧美精品v日韩精品v韩国精品v| 欧美精品一区二区三区一线天视频| 亚洲色图一区二区| 国内精品在线播放| 欧美日本一区二区| 亚洲区小说区图片区qvod| 国产美女av一区二区三区| 欧美亚洲综合在线| 亚洲蜜臀av乱码久久精品| 国产自产v一区二区三区c| 一本久道久久综合中文字幕| 日韩精品一区二区三区视频在线观看| 亚洲另类一区二区| 91性感美女视频| 日韩一区有码在线| 色综合中文字幕国产 | 午夜电影一区二区三区| 一本久久精品一区二区| 中文字幕在线观看不卡| 国产精品综合二区| 久久婷婷色综合| 国产福利91精品一区| 在线观看视频91| 日韩欧美一级二级三级久久久| 国产精品美女www爽爽爽| 不卡的av电影在线观看| 精品视频1区2区3区| 国产精品萝li| 国产91精品免费| 亚洲精品国产品国语在线app| 91丨九色丨蝌蚪富婆spa| 亚洲国产色一区| 91.com视频| 国产成人三级在线观看| 国产欧美日韩精品a在线观看| 99久久免费国产| 首页国产欧美久久| 国产色产综合产在线视频| 色婷婷精品大视频在线蜜桃视频| 亚洲综合一区在线| 久久久99精品免费观看不卡| aa级大片欧美| 国产中文字幕一区| 国产精品久久毛片a| 色av综合在线| 韩国女主播一区| 蜜臀av性久久久久蜜臀aⅴ | 青椒成人免费视频| 国产日韩欧美一区二区三区乱码 | 中文字幕乱码一区二区免费| 色婷婷综合久色| 国产精品99久久久久久似苏梦涵| 久久久777精品电影网影网| 欧美精品一二三| 丰满岳乱妇一区二区三区| 成人欧美一区二区三区在线播放| 欧美一区二区私人影院日本| 高清不卡一区二区| 国产资源精品在线观看| 亚洲国产视频在线| 亚洲欧美日韩国产综合在线 | 国产91在线观看丝袜| 亚洲一卡二卡三卡四卡五卡| 国产精品女主播在线观看| 欧美成人vps| 日韩欧美另类在线| 日韩一区二区高清| 4438x亚洲最大成人网| 欧美视频一区二区| 91黄视频在线| 欧美亚洲动漫精品| 在线精品视频小说1| 欧美影视一区二区三区| 99久久er热在这里只有精品66| 国产传媒欧美日韩成人| 国产经典欧美精品| 成人av在线网站| 色哦色哦哦色天天综合| 色悠久久久久综合欧美99| 成人av网站在线观看| 色婷婷亚洲精品| 91精品国产综合久久香蕉的特点 | 精品国产区一区| 中文字幕不卡的av| 一区二区三区中文在线观看| 亚洲激情一二三区| 免费av成人在线| 国模套图日韩精品一区二区| 粉嫩av亚洲一区二区图片| 成人白浆超碰人人人人| 欧美午夜在线一二页| 欧美一级日韩免费不卡| 国产亚洲成年网址在线观看| 亚洲欧美经典视频| 喷水一区二区三区| 99精品欧美一区| 3751色影院一区二区三区| 精品久久久久久久久久久院品网 | 中文无字幕一区二区三区| 亚洲精品综合在线| 狠狠色综合色综合网络| 99re在线精品| 久久久久久电影| 天天综合网 天天综合色| aa级大片欧美| 久久精品日产第一区二区三区高清版| 亚洲国产精品ⅴa在线观看| 亚洲成人精品一区| 成人精品国产福利| 2020国产精品自拍| 日韩国产精品91| 色偷偷久久人人79超碰人人澡| 久久综合久久综合亚洲| 亚洲国产欧美日韩另类综合 | 亚洲欧美激情在线| 久久99精品久久久久婷婷| 色综合久久九月婷婷色综合| 欧美va在线播放| 久久成人羞羞网站| 日韩欧美高清在线| 日本怡春院一区二区| 91精品国产一区二区三区| 一区二区三区中文字幕| 一本久久综合亚洲鲁鲁五月天| 亚洲国产精品99久久久久久久久 | 国产在线精品视频| 精品对白一区国产伦| 麻豆传媒一区二区三区| 日韩精品最新网址| 久久精品国产亚洲5555| 日韩精品一区二区三区在线播放| 日韩av在线播放中文字幕| 欧美一卡二卡在线观看| 日韩国产欧美视频| 久久久久久免费网| 色女孩综合影院| 日韩和欧美的一区| 久久久不卡网国产精品二区| 国产精品亚洲专一区二区三区 | 美女视频黄免费的久久 | 欧美酷刑日本凌虐凌虐| 亚洲sss视频在线视频| 91精品国产91久久久久久最新毛片| 亚洲成人综合视频| 久久久综合视频| 在线一区二区三区四区五区| 午夜欧美电影在线观看| 欧美视频第二页| 毛片一区二区三区| **网站欧美大片在线观看| 欧美日韩国产免费| 国产成人a级片| 免费观看一级特黄欧美大片|