sql解析器(java).docx_第1页
sql解析器(java).docx_第2页
sql解析器(java).docx_第3页
sql解析器(java).docx_第4页
sql解析器(java).docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计综合实验学号:20124122 班级:12计科3 姓名:张翔一 问题定义利用java做一个简单SQL数据定义语言DDL的解释器二 设计描述基于java的简单的SQL 解析器,从而实现SQL的DDL用来定义关系数据的模式、外模式和内模式,实现对模式、基本表、视图以及索引的定义、修改和删除操作。如下:Create schema ;(1) 数据库模式删除语句格式:drop schema ;(2) 创建表的语句格式:Create table ( , , , , ,);(3) 修改表的语句格式:Alter table add 完整性约束alter column ;(4) 删除表的语句格式:Drop table ;(5) 显示表结构的语句格式:Describe table ;三 编码与验证程序的主界面;各个函数的伪代码或流程图;程序的使用说明;程序功能上的验证性测试;验证结果,包含这些测试数据和运行结果。代码如下:package test;import java.io.IOException;import java.text.MessageFormat;import java.util.ArrayList;import java.util.Date;import java.util.LinkedHashSet;import java.util.LinkedList;import java.util.List;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;import jxl.read.biff.BiffException;import jxl.write.WriteException;import scheme.Scheme;import table.Table;import column.Column;public class Test public static String getSQL()System.out.println(请输入要解释的SQL语句:);Scanner scanner=new Scanner(System.in);String sql=scanner.nextLine();while(sql.charAt(sql.length()-1)!=;)sql=sql+ +scanner.nextLine();return sql;public static List getMessage(String sql)String results=sql.split( +| +( +);List list=new ArrayList();for(int i=0;iresults.length;i+)if(resultsi!=)list.add(resultsi);list.remove();return list;public static String getOperate(List list)return list.get(0);public static String getDBObject(List list)return list.get(1);public static void main(String args) throws IOException, BiffException, WriteExceptionString sql=getSQL();List list=getMessage(sql);String operate=getOperate(list);String DBObject=getDBObject(list);if(!operate.equalsIgnoreCase(create)&!operate.equalsIgnoreCase(drop)&!operate.equalsIgnoreCase(alter)&!operate.equalsIgnoreCase(describe)System.out.println(ERROR:+operate+不合法);if(!DBObject.equalsIgnoreCase(scheme)&!DBObject.equalsIgnoreCase(table)System.out.println(ERROR:+DBObject+不合法);if(operate.equalsIgnoreCase(create)if(DBObject.equalsIgnoreCase(scheme)String schemeName=Scheme.getName(sql);Scheme.createScheme(schemeName);else if(DBObject.equalsIgnoreCase(table)String tableName=Table.getNameOfCreateOrAlter(sql);List Columnslist=Table.getColumns(sql);Table.createTable(tableName,Columnslist);else if(operate.equalsIgnoreCase(drop)if(DBObject.equalsIgnoreCase(scheme)String schemeName=Scheme.getName(sql);Scheme.dropScheme(schemeName);else if(DBObject.equalsIgnoreCase(table)String tableName=Table.getNameOfDescOrDrop(sql);Table.dropTable(tableName);else if(operate.equalsIgnoreCase(alter)if(DBObject.equalsIgnoreCase(table)String tableName=Table.getNameOfCreateOrAlter(sql);Table.alterTable(tableName, sql);else if(operate.equalsIgnoreCase(describe)String tableName=Table.getNameOfDescOrDrop(sql);Table.descTable(tableName);创建模式create scheme tables;创建模式zxcreate scheme zx;创建表create table student (sno char(10) primary key,sna varchar(20) not null,birth date);重新创建一个student,显示已存在描述表describe table student;修改表alter table table1 add column1 int;修改表,显示已存在删除表drop table student;删除表,显示不存在四 总结 利用java解决问题相对来说工作量不大,但是要求要有总体的设计和优化代码。从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论