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

2024-06-08 00:18

本文主要是介绍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;StringBuffer allDatas = new StringBuffer();  //方法返回的字符串try {dba = new DBAccess();rs = dba.executeQuery(sql);ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();/** 每次请求处理之前,先对columns进行一次清空 */	columns = columns.delete(0, columns.length());	/** 在返回的字符串里添加表字段信息 */for (int i = 1; i <= columnCount; i++) {allDatas.append(rsmd.getColumnName(i)).append(";");columns.append(rsmd.getColumnName(i)).append(";");}allDatas.deleteCharAt(allDatas.length() - 1);columns.deleteCharAt(columns.length() - 1);String[] column = columns.toString().split(";");allDatas.append("||");/** 在返回的字符串里添加表数据信息 */while (rs.next()) {for (int i = 0; i < column.length; i++) {allDatas.append(rs.getString(column[i])).append("#");}allDatas.deleteCharAt(allDatas.length() - 1);allDatas.append("@_@");  //以"@_@"符号分隔前台的数据字段信息和整条数据信息				/**生成每条数据的json字符串*/allDatas.append("{");for (int i = 0; i < column.length; i++) {allDatas.append("\"").append(column[i]).append("\"").append(":").append("\"").append(rs.getString(column[i])).append("\"").append(",");}allDatas.deleteCharAt(allDatas.length() - 1);allDatas.append("}");												allDatas.append(";");												}allDatas.deleteCharAt(allDatas.length() - 1);			} catch(Exception e){throw new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"根据传入的sql获取数据时,发生错误", e,"{}");} finally {close(dba, pstmt, rs);}return allDatas.toString();}/*** 从用户输入的sql语句中解析出表名并存入变量tableName中* @param sql 用户输入的sql语句*/public static void getTableName(String sql){if (sql.contains("where") || sql.contains("WHERE")) {int start = 0;int end = 0;if (sql.contains("from")) {start = sql.indexOf("from");} else if (sql.contains("FROM")) {start = sql.indexOf("FROM");}if (sql.contains("where")) {end = sql.indexOf("where");} else if (sql.contains("WHERE")) {end = sql.indexOf("WHERE");}if (start == 0 || end == 0) {System.out.println("解析表名失败");} else {tableName = sql.substring(start + 5, end);}} else {int start = 0;if (sql.contains("from")) {start = sql.indexOf("from");} else if (sql.contains("FROM")) {start = sql.indexOf("FROM");}if (start == 0) {System.out.println("解析表名失败");} else {tableName = sql.substring(start + 5, sql.length());}}}/*** 判断某条数据是否已被成功删除方法* @param sql 查询删除数据的sql语句* @return  返回某条超链接是否已被成功删除 true:已被删除 false:没有被删除* @throws GeeznException*/	public static synchronized Boolean checkDeleteResult(String sql)throws GeeznException{boolean flag = true; //方法返回的字符串DBAccess dba = null;ResultSet rs = null;try{dba = new DBAccess();rs = dba.executeQuery(sql);while(rs.next()){flag = false;}}catch(Exception e){throw new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"判断某条数据是否已被成功删除时,发生错误", e,"{}");}finally{close(dba, null, rs);}return flag;}/**关闭所有连接* @throws GeeznException */private static void close(DBAccess dba,Statement ps,ResultSet rs) throws GeeznException{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(dba!=null){dba.close();}}catch(Exception e){throw new GeeznException(QTPCommonDao.MODULE_QTP, GEZLoggerManager.LOGLEVEL_ERROR,"关闭所有连接时,发生错误", e,"{}");			}			}
}



 

这篇关于QTP校验数据库中数据后台项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040706

相关文章

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne