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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌