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

📄 dbcompile.java

📁 一个用JAVA语言实现的SQL编译器。能够迅速实现对SQL语言的解析。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			return;
		}
		Where w=new Where();
		w.setWhere(refer, standard, value,conj);
		outscreen+=ts.selectRecord(column,w,function,othername,by,order);
	}

	private void actionDelete() {
		
		String tableName=(String)tablename.get(0);
		TableStructure ts = tm.getTable(tableName);
		if(ts==null){
			outscreen+="Can't find the table!\n";	
			return;
		}
		Where w=new Where();
		w.setWhere(refer, standard, value,conj);
		String f=ts.deleteRecord(w);
		if(f.equals("suc")) outscreen+=ts.showTable();
		else outscreen+=f;
	}

	private void actionUpdate() {
		String tableName=(String)tablename.get(0);
		TableStructure ts= tm.getTable(tableName);
		if(ts==null){
			outscreen+="Can't find the table!\n";	
			return;
		}
		Where w=new Where();
		w.setWhere(refer, standard, value,conj);
		UpSet u=new UpSet();
		u.setUpset(column, value1);
		String f=ts.updateRecord(u, w);
		if(f.equals("suc")) outscreen+=ts.showTable();
		else outscreen+=f;
	}

	void actionInsert() {
		String tableName=(String)tablename.get(0);
		TableStructure ts = tm.getTable(tableName);
		if(ts==null){
			outscreen+="Can't find the table!\n";	
			return;
		}
		boolean f=true;
		TableColumns[] tc;

		if(ts.getTableName().equals(tableName))
			{
				f=false;
				tc=ts.getTc();
				String []s=new String[tc.length];
				for(int j=0;j<tc.length;j++)
					s[j]="null";
				if(column.size()>0)
				{
					for(int j=0;j<tc.length;j++)
					{
						for(int k=0;k<column.size();k++)
							if(tc[j].getColumn().equals((String)column.get(k)))
							{
								s[j]=(String)value.get(k);
							}
					}
				}else {
					for(int j=0;j<value.size();j++)
						s[j]=(String)value.get(j);
				}
				boolean result = ts.insertRecord(s);
				if(result==false) 
				{
					outscreen+="Can't insert the record!\n";
					return;
				}
				outscreen+=ts.showTable();
				return;
			}
		if(f) outscreen+="Can't find the table!\n";
	}

	void actionTable() {
			String tableName=(String)tablename.get(0);
			TableStructure ts_temp = tm.getTable(tableName);
			if(ts_temp!=null) {
				outscreen+=tableName+"表已存在,不能重复创建!\n";
				return;
			}
			TableColumns[] tc = new TableColumns[column.size()];
			for(int i=0;i<tc.length;i++)
			{
				tc[i]=new TableColumns();
				tc[i].setColumn((String)column.get(i));
				tc[i].setType((String)type.get(i));
				tc[i].setIsEmpty(((String)bound.get(i)).contains("notnull")?1:0);
			}
			String primary_key=null;
			
			for(int i=0;i<bound.size();i++)
				if(((String)bound.get(i)).contains("pk"))
					primary_key=(String)column.get(i);
			String foreign_key=null;
			for(int i=0;i<bound.size();i++)
				if(((String)bound.get(i)).contains("fk"))
					foreign_key=(String)column.get(i)+((String)bound.get(i)).substring(((String)bound.get(i)).indexOf("fk")+2);
			TableStructure ts= new TableStructure();
			ts.createTable(tableName, tc, primary_key, foreign_key);
			tm.setTableList(ts);//添加到系统表里
			
			outscreen+=ts.showTable();
	}

	String recognize(String word)
	 {
		 for(int i=0;i<op.length;i++)
			 if(word.equals(op[i]))
				 return "op";
		 for(int i=0;i<ref.length;i++)
			 if(word.equals(ref[i]))
				 return "ref";
		 for(int i=0;i<key.length;i++)
			 if(word.equals(key[i]))
				 return word;
		 for(int i=0;i<datatype.length;i++)
			 if(word.equals(datatype[i]))
			 {
				if(word.equals("varchar"))
					return "varchar";
				else return "datatype";
			 }
		 for(int i=0;i<punc.length;i++)
			 if(word.equals(punc[i]))
				 return word;
		 for(int i=0;i<func.length;i++)
			 if(word.equals(func[i]))
				 return "function";
		 try{
			 Integer.parseInt(word);
			 return "number";
		 }catch (Exception e){
			 return "letters" ;
		 }
	 }
	 boolean action(String act,String sql){
		 if(act.equals("null")) return true;
		 act=act.replace("&", sql);
		 System.out.println(act);
		 char handle;
		 handle=act.charAt(0);
		 switch(handle){
		 case 'c':switch(des=act.charAt(7)){
		 			case 't':
		 			 		 tablename=new Vector();
		 			 		 column=new Vector();
		 			 		 type=new Vector();
		 			 		 bound=new Vector();
		 			 		 tablename.removeAllElements();
		 					 column.removeAllElements();
		 					 type.removeAllElements();
		 					 bound.removeAllElements();
							 break;
					case 'i':
							 tablename=new Vector();
			 		 		 column=new Vector();
			 		 		 value=new Vector();
			 		 		 tablename.removeAllElements();
		 					 column.removeAllElements();
		 					 value.removeAllElements();
					 		 break;
					case 'u':tablename=new Vector();
							 column=new Vector();
							 value=new Vector();
							 value1=new Vector();
							 standard=new Vector();
							 refer=new Vector();
							 conj=new Vector();
							 conj.removeAllElements();
							 conj.add("and");
							 refer.removeAllElements();
							 column.removeAllElements();
							 tablename.removeAllElements();
							 value.removeAllElements();
							 value1.removeAllElements();
							 standard.removeAllElements();
							 break;
					case 'd':tablename=new Vector();
							 value=new Vector();
							 standard=new Vector();
							 refer=new Vector();
							 conj=new Vector();
							 conj.removeAllElements();
							 conj.add("and");
							 refer.removeAllElements();
							 tablename.removeAllElements();
							 value.removeAllElements();
							 standard.removeAllElements();
							 break;
					case 's':tablename=new Vector();
							 value=new Vector();
							 standard=new Vector();
							 refer=new Vector();
							 conj=new Vector();
							 column=new Vector();
							 function=new Vector();
							 othername=new Vector();
							 othername.removeAllElements();
							 function.removeAllElements();
							 column.removeAllElements();
							 conj.removeAllElements();
							 conj.add("and");
							 refer.removeAllElements();
							 tablename.removeAllElements();
							 value.removeAllElements();
							 standard.removeAllElements();
		 		}break;
		 case 'a':switch(act.charAt(7)){
		 			case 'b':by=act.substring(act.indexOf("=")+1);
		 			case 'o':switch(act.charAt(8)){
				 			 case 't':othername.add(act.substring(act.indexOf("=")+1));break;
				 			 case 'r':if(act.substring(act.indexOf("=")+1).equals("desc")) order=false;break;
				 			}break;
		 			case 't':switch(act.charAt(8)){
				 				case 'a':tablename.add(act.substring(act.indexOf("=")+1));break;
				 				case 'y':type.add(act.substring(act.indexOf("=")+1));break;
				 			}break;
		 			case 'c':switch(act.charAt(9)){
		 					case 'n':conj.add(act.substring(act.indexOf("=")+1));break;
		 					case 'l':column.add(act.substring(act.indexOf("=")+1));break;
		 					}break;
		 			case 'n':bound.add("notnull");break;
		 			case 'u':if(bound.size()<column.size())  {bound.add("unique");break;}
					 		 else {String s=(String)bound.get(bound.size()-1)+" unique";
					 		 bound.remove(bound.size()-1);bound.add(s);
					 		System.out.println((String)bound.get(bound.size()-1));break;}
		 			case 'p':bound.add("pk");break;
		 			case 'f':switch(act.charAt(8)){
		 					 case 'k':if(pos==-1){
					 					String s2=act.substring(act.indexOf("=")+1);System.out.println(s2);
					 					 for(int i=0;i<column.size();i++)
					 					 { 
					 						 if(s2.equalsIgnoreCase((String)column.get(i)))
					 						 {
					 							String s=(String)bound.get(i)+" fk";
										 		bound.remove(i);
										 		bound.add(i, s);
										 		pos=i;
										 		break;
					 						 }}
					 					}else {
					 						String s=(String)bound.get(pos)+" "+act.substring(act.indexOf("=")+1);
					 				 		 bound.remove(pos);bound.add(pos,s);break;
					 					}
					 					 break;
		 					 case 'u':function.add(act.substring(act.indexOf("=")+1));break;
		 			}break;
		 			case 'r':switch(act.charAt(8)){
		 						case 'e':refer.add(act.substring(act.indexOf("=")+1));break;
		 					}
		 					break;
		 			case 'v':String s=act.substring(act.indexOf("=")+1);
		 					 try{
		 						 Integer.parseInt(s);
		 					 }catch(Exception e){
		 						 if (s.equals("null")) ;
		 						 else if(s.charAt(0)=='\'') s=s.substring(1,s.length()-1);
		 						 else {
		 							 outscreen+="the type of values is not right!\n";
		 							 return false;
		 						 }
		 					 }
		 					 switch(act.charAt(12)){
		 					 case '1':value1.add(s);break;
		 					 default:value.add(s);break;
		 					 }
		 					 break;
		 			case 's':standard.add(act.substring(act.indexOf("=")+1));break;
		 	}break;
		 case 'e':switch(act.charAt(7)){
		 			case '1':if(bound.size()<column.size()) bound.add(" ");break;
		 			case '2':if(!(act.substring(act.indexOf("=")+1).equals("=")))
		 						return false;
		 					 break;
		 			case '3':if(act.substring(act.indexOf("=")+1).equals("*"))
		 						column.add("");
		 					else return false;
		 		 }
		 		  break;
		 }
		 return true;
	 }
	 
	 
}

⌨️ 快捷键说明

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