日期:2014-05-16  浏览次数:20599 次

QTP校验数据库中数据后台项目

数据校验功能后台主要包括两个类:QTPCommonServlet.java和QTPCommonDao.java

其中QTPCommonServlet.java为:

package com.runqianapp.qtp;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.runqianapp.qtp.QTPCommonDao;
import com.geezn.exception.GeeznException;
import com.runqianapp.common.log.GEZLoggerManager;
import com.runqianapp.common.servlet.AbstractGezServlet;
/**
 * QTP数据检查Servlet
 * @author RAQ
 *
 */
public class QTPCommonServlet extends AbstractGezServlet {
	/**获取表中所有数据*/
	private static final String GET_ALL_DATA = "getAllData";
	/**检查删除操作结果*/
	private static final String CHECK_DELETE_RESULT = "checkDeleteResult";
	
	/**
	 * 重写service()方法
	 */
	public void service(HttpServletRequest request, HttpServletResponse response){

		response.setContentType("text/html");
		PrintWriter out = null;
		try {
			request.setCharacterEncoding("UTF-8");
			response.setCharacterEncoding("UTF-8");	
			out = response.getWriter();
		} catch (Exception e) {
			GeeznException ge;
			if(e instanceof GeeznException){
				ge = (GeeznException) e;
			}else{
				ge = new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"设置字符格式、获取输出对象时,发生错误", e, "{}");
			}
			out.print(ge.getErrorMessageJson());
		}	
		String action = request.getParameter("action");

		
		if(GET_ALL_DATA.equals(action)){
			String sql = request.getParameter("sql");
			String sqlDateNumber = request.getParameter("sqlDateNumber");
			String allDatas = "";
			try {
				allDatas = QTPCommonDao.getAllDatas(sql,sqlDateNumber);
			} catch (GeeznException e) {
				GeeznException ge;
				if(e instanceof GeeznException){
					ge = (GeeznException) e;
				}else{
					ge = new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"得到表中数据时,发生错误", e, "{}");
				}
				out.print(ge.getErrorMessageJson());
			}
			out.print(allDatas);
		}else if(CHECK_DELETE_RESULT.equals(action)){
			String sql = request.getParameter("sql");
			boolean deleteResult = false;
			try {
				deleteResult = QTPCommonDao.checkDeleteResult(sql);
			} catch (GeeznException e) {
				GeeznException ge;
				if(e instanceof GeeznException){
					ge = (GeeznException) e;
				}else{
					ge = new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"检查删除动作结果时,发生错误", e, "{}");
				}
				out.print(ge.getErrorMessageJson());
			}
			out.print(deleteResult);
		}		
	}
}

QTPCommonDao.java为:

package com.runqianapp.qtp;

import java.sql.*;
import com.geezn.exception.GeeznException;
import com.runqian.mis2.util.DBAccess;
import com.runqianapp.common.log.GEZLoggerManager;
/**
 * QTP通用数据库操作类
 * @author RAQ
 *
 */
public class QTPCommonDao {
	/**
	 * 用于存储表字段名称,各字段名称之间用“;”分隔
	 */
	public static StringBuffer columns = new StringBuffer();
	/**
	 * 用于存储当前操作表名
	 */
	public static String tableName = "";
	/**
	 * 用于日志输出,模块标识
	 */
	public static final String MODULE_QTP = "qtpModule"; 
	
	/***
	 * 获取表字段名称及所有数据信息
	 * @param sql 用户输入的查询sql语句
	 * @param sqlDateNumber 查询数据条数(保留功能,目前暂不处理)
	 * @return 表字段名称及所有链接信息 如:"short_link;...;link_name||/link1,...,百度@_@{};/link2,...,谷歌@_@{}"
	 * 		   表字段名称与表数据之间用"||"分隔,各表字段名称之间与各表数据之间用";"分隔,每条表数据内部用"#"和"@_@"分隔
	 * 		   其中"#"用来分隔表字段数据,"@_@"用来分隔表字段数据与json字符串
	 * @throws GeeznException 
	 */
	public static synchronized String getAllDatas(String sql, String sqlDateNumber)
			throws GeeznException {
		getTableName(sql);  //解析出表名
		PreparedStatement pstmt = null;
		DBAccess dba = null;
		ResultSet rs = null;
		StringB