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

首先看一下效果图:

未操作之前页面:

进行操作之后的页面:

前台jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
 request.setCharacterEncoding("UTF-8");
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘index.jsp‘ starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<script src="<%=path %>/mis2/gezComponents/jquery/jquery.js" type="text/javascript"></script>
	<script src="<%=path %>/mis2/gezComponents/jquery/jqueryui/jqueryuijs/jqueryui.js" type="text/javascript"></script>
	<script src="<%=path %>/mis2/gezComponents/jsUtils/AjaxUtil.js" type="text/javascript"></script>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<style type="text/css">
	 #table th{
   		font-size:1.1em;
    	text-align:left;
    	padding-top:5px;
    	padding-bottom:4px;
    	background-color:#A7C942;
    	color:#ffffff;
  	}
	</style>

	<script>
	/**
	 * 根据用户点击单元格,动态设置字段详细数据文本框的值
	 */
	function getColumnDetail(columnData){
			columnData.style.color = "blue";  //数据被点过之后颜色设置为蓝色
			var columnDetail=document.getElementById("columnDetail");  // 找到字段详细数据对象
			columnDetail.innerHTML=columnData.innerHTML;    // 改变内容
	}

	/**
	 * 设置鼠标事件响应效果
	 */
	function setOnMounseOverColor(columnData){
		columnData.style.background = "red";  //鼠标经过时表格背景设置为红色
	}
	function setOnMounseOutColor(columnData){
		columnData.style.background = "";
	}

	/**
	 * 获取详细数据,即每条数据的完整json字符串,并显示到整行数据一栏
	 */
	function getRowDataDetail(tr){
        var jsonData = tr.getAttribute("jsonData"); //获取该条数据的json字符串
		var rowDataDetail = document.getElementById("rowDataDetail");  // 找到整行数据对象
		rowDataDetail.innerHTML=jsonData;    // 改变内容
	}

	/**
	 * 校验删除操作结果
	 */
	function checkDeleteResult(){
		var sql = document.getElementById("sql").value;
		var ajax = new AjaxUtil();
		var path = "<%=path %>/QTPCommonServlet?action=checkDeleteResult";
		var paramData = "sql=" + sql;
		var settings = {
			"datatype":"text"
		};
		ajax.sendAjax(path,paramData,successBackFunction,errorBackFunction,settings);         

		function successBackFunction(result){
			var deleteResult = document.getElementById("deleteResult");
			if(result==‘true‘){
				deleteResult.value = "成功";
			}else{
				deleteResult.value = "失败";
			}
		}
		function errorBackFunction(){
			alert("校验删除操作未执行");
		}
	}

	/**
	 * 获取表数据
	 */
	function getAllDatas(){
		var sql = document.getElementById("sql").value;
		var sqlDateNumber = "0";  //sqlDateNumber为保留变量,如需要对查询数据条数进行限制,可以放开使用(需要后台支持)
		var ajax = new AjaxUtil();
			var path = "<%=path %>/QTPCommonServlet?action=getAllData";
			var paramData = "sql=" + sql +"&sqlDateNumber=" + sqlDateNumber;
			var settings = {
				"datatype":"text"
			};
			ajax.sendAjax(path,paramData,successBackFunction,errorBackFunction,settings);         

		function successBackFunction(result){
		    createTable(result);
		}
		function errorBackFunction(){
			alert("获取表数据操作未执行");
		}
	}

	/**
	 * 动态生成表格
	 */
	function createTable(result){
		var columnNames;   //表字段名称字符串
		var columnDatas;   //表数据字符串
		var columnNamesDetail = new Array();  //表字段名称数组
		var columnData = new Array();         //表数据数组
		var columnDataDetail = new Array();   //单条表数据信息数组
		var columnJsonData;     //单条数据的json字符串

		var _table = document.getElementById("table");
		var _row;
		var _cell;
		var rowNumber = 0;  //记录数据条数,用于下面判断是否出竖向滚动条

		if(result.indexOf("||")!=-1) {
			columnNames = result.split("||")[0];
	 		columnNamesDetail = columnNames.split(";");
	 		columnDatas = result.split("||")[1];
	 		columnData = columnDatas.split(";");
	 	}

		/**先判断表格中是否已有内容,如有则执行清空操作*/
		if(0!=_table.childNodes.length){
	 		for(var i = _table.childNodes.length-1;i>=0;i--){
				_table.removeChild(_table.childNodes[i]); //删除掉每个子节点的内容
			}
			var div = document.getElementById("mydiv");
	 		div.style.height="0px";		 	//将div高度初始化为最小
	 	}

	 	/**生成数据条数*/
	 	var totalNumber=document.getElementById("totalNumber");  // 找到数据条数统计对象
	 	if(columnData==0){
	 		totalNumber.innerHTML="共"+0+"条";
	 		alert(‘抱歉,没有查询到相关数据!‘);
	 	}else{
			totalNumber.innerHTML="共"+columnData.length+"条";    // 改变内容
		}	

	 	/**生成表头部分*/
	 	_row = document.createElement("tr");
	    document.getElementById("table").appendChild(_row);
	    for(var j = 0; j < columnNamesDetail.length; j++) {
	        	_cell = document.createElement("th");
	        	_cell.innerText = columnNamesDetail[j];
	        	_row.appendChild(_cell);
	 		} 

	 	/**生成表主体部分*/
	 	for (var i = 0; i < columnData.length; i++) {
	 		columnJsonData = columnData[i].split("@[email protected]")[1];
	 		columnDataDetail = columnData[i].split("@[email protected]")[0].split("#");
	 		_row = document.createElement("tr");
	 		_row.setAttribute("jsonData", columnJsonData);  //给每个tr对象设置jsonData属性,用于被点击时得到json字符串
	 		rowNumber++;
	 		_row.onclick= function(){getRowDataDetail(this)};
	    	document.getElementById("table").appendChild(_row);
	    	for(var j = 0; j < columnDataDetail.length; j++) {
	        	_cell = document.createElement("td");
	        	_cell.onclick= function(){getColumnDetail(this)};
	        	_cell.onmouseover = function(){setOnMounseOverColor(this)};
	        	_cell.onmouseout = function(){setOnMounseOutColor(this)};
	        	if(columnDataDetail[j]==‘‘ || columnDataDetail[j]==undefined || columnDataDetail[j]==null){
	        		_cell.innerText = "null";
	        	}else{
	        		_cell.innerText = columnDataDetail[j];
	        	}
	        	_row.appendChild(_cell);
	 		}

	 	}
	 	/**设置表格滚动条*/
	 	var div = document.getElementById("mydiv");
	 	if(rowNumber>15){  //当数据超过15条时,限制div高度,出滚动条
	 		div.style.height="400px";
	 	}
	 	div.style.width="100%";
	 	div.style.overflow="scroll";
	}
	</script>
  </head>

  <body>
    <body>
    	<h1 align="center">QTP数据检查</h1>
    	<p>
    		<label style="font-size:20px;">测试说明:</label><br/><hr align="left">
    		<label style="font-size:17px;">本页面作为QTP测试辅助页面,可以完成数据表增、删、改、查操作后的数据校验</label><br/>
    		<label style="font-size:17px;">增、改、查校验流程:</label><br/>
    		<label style="font-size:15px;">(1)在SQL定义一栏里输入相应SQL语句,如:"select * from t_hyperlink",点击取值,则在数据一栏生成对应查询数据表格</label><br/>
    		<label style="font-size:15px;">(2)点击表格中的任意一个单元格,则在字段详细数据一栏里显示字段信息,同时在详细数据一栏里显示整条数据对应的json字符串</label><br/>
    		<label style="font-size:17px;">删除校验流程:</label><br/>
    		<label style="font-size:15px;">在SQL定义一栏里输入查找被删除数据的SQL,如:"select * from t_hyperlink where short_link=‘/link100‘",点击校验删除操作,</label><br/>
    		<label style="font-size:15px;">根据删除操作结果显示的信息进行判断删除操作是否成功执行。</label><br/><hr align="left">
    	</p>

		<p>
			<form action="http://localhost:8080/QTP/QTPCommonServlet" method="post">
			<table style="width:100%;">
				<tr>
					<td style="width:50%;">
	    				<label style="font-size:20px;width:100%;" >SQL定义:</label>
					</td>
					<td style="width:50%;">
					<!--
						请选择数据操作数目:
						<select name="sqlDateNumber">
							<option id="" name="sqlDataNumber" value="">自定义</option>
		  					<option id="" name="sqlDataNumber" value="10">显示前10条</option>
		  					<option id="" name="sqlDataNumber" value="all">显示全部</option>
						</select>
						-->
						<label style="font-size:16px;width:20%;" align="right" >删除操作结果:</label>
						<input type="text"   style="width:25%;" id="deleteResult" />
						<input type="button" style="width:25%;" value="校验删除操作" onclick="checkDeleteResult();"/>
						<input type="button" style="width:25%;" value="取值" style="width: 120px;"  onclick="getAllDatas();" />
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<textarea id="sql" name="sql" style="width:100%;" rows = "5"></textarea>
					</td>
				</tr>
			</table>
			</form>
		</p>
		<p>
			<label style="font-size:20px;" >数据:</label>
			<label style="font-size:20px;width:300px;" id="totalNumber">共0条</label> <br/>
			<div id="mydiv">
			<table border="1">
				<tbody id="table">
				</tbody>
			</table>
			</div>

		</p>
		<p>
			<label style="font-size:20px;" >查看字段详细数据:</label> <br/>
			<textarea name="sql" rows = "5" style="width:100%;" id="columnDetail"></textarea>
		</p>
		<p>
			<label style="font-size:20px;" >查看整行数据:</label> <br/>
			<textarea name="sql" rows = "5" style="width:100%;" id="rowDataDetail"></textarea>
		</p>
  </body>
</html>

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

时间: 2024-10-12 19:47:03

QTP校验数据库中数据前台项目的相关文章

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.runqiana

数据库中数据DELETE了怎样恢复

USE [BBDAS_FP_DATA] GO /****** Object: StoredProcedure [dbo].[Recover_Deleted_Data_Proc] Script Date: 07/12/2014 15:09:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Recover_Deleted_Data_Proc] @Database_Name NVARCH

一起ORACLE数据库中数据查询结果不一致问题的排查过程

一.问题描述 在某软件开发项目中,需要在ORACLE数据库中建立十张类型相同的员工信息表tb_employeeinfo0~tb_employeeinfo9,并建立向这十张表中插入数据的存储过程.ORACLE数据库安装在Linux操作系统下. 为了操作上的方便性,开发人员在PL/SQL Developer软件(ORACLE数据库开发软件)上实现了建表和建存储过程的操作.之后,开发人员利用SQL语句在在PL/SQL Developer软件上实现了向某个数据表中插入数据的操作.利用select语句查询

找回MD5加密的密码及MD5加密数据库中数据

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办?最为菜鸟的我,刚开始也很迷茫,不过向前辈们请教了请教,自己也查了查资料,特意整理记录一下,并分享给大家. 前提是你知道这个密码存在在哪个表的哪个字段,只不过是加密了,如果是oracle数据库的话,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('预置密码'))来得到一个MD5加密后的密码, 所以我们可

使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL

场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad++打开会在部分数据末尾出现NUL 排查原因: NUL在C语言中是一个特殊字符常量'\0',空字符 在linux中处理字符串写入,每行字符串结尾如果是空字符,linux就会用'\0'表示 解决方案: 使用该文件时将NUL替换为“ ”空字符 public static String trimnull(S

数据库中数据数据初始化的好处

在进行软件开发的过程中我们可能会遇到这种情况:服务器启动时调用一些方法,这些方法只用来执行某些查询功能的sql语句,这就是所谓的“数据初始化”操作.要知道进行这一操作的好处则必须要知道程序执行SQL的内部工作流程: 第一步: 程序将查询功能的SQL语句发给服务器端执行.在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步: 服务器解析请求的SQL语句: 1.SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实:往往一个查询语句在第一次运行的

JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作

(—)通过mysql workbench 创建一个数据库,在这里命名为company,然后建一个tb_employee表 (二)以下是java代码对表tb_employee的操作 1 创建一个Employee类,包括员工的一些信息,如  id  name age sex 2创建DatabaseConnection类,用于数据库的连接 3创建一个EmployeeOperation类,用于操作数据库,它里面包括了 以下方法 (1)getInstance()   //返回EmployeeOperati

使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中. 1.问题背景 使用Sqoop把oracle数据库中的一张表,这里假定为student,当中的数据导入到hdfs中,然后再创建hive的external表,location到刚才保存到hdfs中数

分布式数据库中数据的分片----《分布式数据库系统及其应用》

数据分片也称数据分割,是分布式数据库的特征之一.在一个分布式数据库中,全局数据库是由各个局部数据库逻辑组合而成:反之,各个局部数据库是由全局数据库的某种逻辑分割而得. 在分布式数据库中,数据存放的单位是数据的逻辑片段.对关系数据库来说,一个数据库的逻辑片段是关系的一部分.数据分片有三种基本分法,它们是通过关系代数的基本运算来实现的. 水平分片 按特定条件把全局关系的所有元祖分划成若干个相互不相交的子集,每一子集为全局关系的一个逻辑片段,简称片段.它们通过对全局关系施加选择运算得到,并可通过对这些