合并题库中所有的试题

package newexam;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

/**
 * @author  该类将把考试题库的所有题目汇总,结果放到第一套题中
 */
public class CollectAll {
	static String fileName = "d:/cf/015山东轻工业学院_XP_13考场.crp";
	static int NUM = 10;

	static Connection con = null;

	// 类静态方法,完成对数据库连接等初始化工作
	static {
		if (fileName.endsWith(".crp")) {
			File srcFile = new File(fileName);
			String newfile = fileName + ".mdb";
			JOptionPane.showMessageDialog(null, fileName
					+ "不是Access文件,系统将自动解密,解密后的文件名为:" + newfile);
			File desFile = new File(newfile);
			try {
				BufferedInputStream in = new BufferedInputStream(
						new FileInputStream(srcFile));
				BufferedOutputStream out = new BufferedOutputStream(
						new FileOutputStream(desFile));
				int ch;
				while ((ch = in.read()) != -1) {
					ch ^= 9;
					out.write(ch);
				}
				in.close();
				out.close();
				fileName = newfile;
			} catch (FileNotFoundException e) {
				System.out.println("找不到文件!");
				e.printStackTrace();
			} catch (IOException e) {
				System.out.println("文件操作失败!");
				e.printStackTrace();
			}
		}

		try {
			Class.forName("com.hxtt.sql.access.AccessDriver");
			String url = "jdbc:access:///" + fileName;
			con = DriverManager.getConnection(url);
		} catch (ClassNotFoundException e) {
			System.out.println("ACCESS_JDBC加载失败");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("数据库连接或创建语句失败");
			e.printStackTrace();
		}
	}

	/**
	 * 以第一套题为模板,将其他的题汇总进来
	 */
	public static void allInOne() throws Exception {

		int opt = JOptionPane.showConfirmDialog(null,
				"数据将汇总在第一套题中,汇总前请先备份该数据库,开始汇总吗?", "数据汇总",
				JOptionPane.YES_NO_OPTION);
		if (opt == JOptionPane.NO_OPTION)
			return;
		Statement stat = con.createStatement();
		String sql;
		// 从第二套开始,所有内容汇总到第一套题中
		for (int i = 2; i <= NUM; i++) {
			System.out.println("正在汇总 Judge" + i + "到Judge1");
			sql = "INSERT INTO Judge1 SELECT * FROM Judge" + i;
			stat.execute(sql);

			System.out.println("正在汇总MultiSelect" + i + "到MultiSelect1");
			sql = "INSERT INTO MultiSelect1 SELECT * FROM MultiSelect" + i;
			stat.execute(sql);

			System.out.println("正在汇总SingleSelect" + i + "到SingleSelect1");
			sql = "INSERT INTO SingleSelect1 SELECT * FROM SingleSelect" + i;
			stat.execute(sql);

			System.out.println("正在汇总WindowsOperation" + i
					+ "到WindowsOperation1");
			sql = "INSERT INTO WindowsOperation1 SELECT * FROM WindowsOperation"
					+ i;
			stat.execute(sql);

			System.out.println("正在汇总ExcelFile" + i + "到ExcelFile1");
			sql = "INSERT INTO ExcelFile1 SELECT * FROM ExcelFile" + i;
			stat.execute(sql);

			System.out.println("正在汇总ExcelOperation" + i + "到ExcelOperation1");
			sql = "INSERT INTO ExcelOperation1 SELECT * FROM ExcelOperation"
					+ i;
			stat.execute(sql);

			System.out.println("正在汇总WordFile" + i + "到WordFile1");
			sql = "INSERT INTO WordFile1 SELECT * FROM WordFile" + i;
			stat.execute(sql);

			System.out.println("正在汇总WordOperation" + i + "到WordOperation1");
			sql = "INSERT INTO WordOperation1 SELECT * FROM WordOperation" + i;
			stat.execute(sql);

			System.out.println("正在汇总PowerPointFile" + i + "到PowerPointFile1");
			sql = "INSERT INTO PowerPointFile1 SELECT * FROM PowerPointFile"
					+ i;
			stat.execute(sql);

			System.out.println("正在汇总PowerPointOperation" + i
					+ "到PowerPointOperation1");
			sql = "INSERT INTO PowerPointOperation1 SELECT * FROM PowerPointOperation"
					+ i;
			stat.execute(sql);

			System.out.println("正在汇总FrontPageFile" + i + "到FrontPageFile1");
			sql = "INSERT INTO FrontPageFile1 SELECT * FROM FrontPageFile" + i;
			stat.execute(sql);

			System.out.println("正在汇总FrontPageOperation" + i
					+ "到FrontPageOperation1");
			sql = "INSERT INTO FrontPageOperation1 SELECT * FROM FrontPageOperation"
					+ i;
			stat.execute(sql);

		}

		System.out.println("汇总成功,请检查表!");
	}

	/**
	 * 删除汇总数据库中所有表,只保留汇总表,汇总数据在第一套题中
	 */
	public static void deleteAll() throws Exception {

		int opt = JOptionPane.showConfirmDialog(null, "删除表之前,请先确认已经汇总.确认删除吗?",
				"删除数据表", JOptionPane.YES_NO_OPTION);
		if (opt == JOptionPane.NO_OPTION)
			return;

		Statement stat = con.createStatement();
		String sql = "";
		// 删除所有表
		int m;
		for (m = 2; m <= NUM; m++) {
			sql = "drop table PowerPointFile" + m;
			stat.execute(sql);
			sql = "drop table powerpointOperation" + m;
			stat.execute(sql);

			sql = "drop table WordFile" + m;
			stat.execute(sql);
			sql = "drop table WordOperation" + m;
			stat.execute(sql);

			sql = "drop table ExcelFile" + m;
			stat.execute(sql);
			sql = "drop table ExcelOperation" + m;
			stat.execute(sql);

			sql = "drop table FrontPageFile" + m;
			stat.execute(sql);
			sql = "drop table FrontPageOperation" + m;
			stat.execute(sql);

			sql = "drop table WindowsOperation" + m;
			stat.execute(sql);

			sql = "drop table Blanks" + m;
			stat.execute(sql);

			sql = "drop table SingleSelect" + m;
			stat.execute(sql);

			sql = "drop table MultiSelect" + m;
			stat.execute(sql);

			sql = "drop table Judge" + m;
			stat.execute(sql);
		}
		stat.close();
		System.out.println("删除成功,请检查!");
	}

	public static void main(String args[]) throws Exception {
		allInOne();
		deleteAll();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值