<%--页面程序均须此包含标记--%>
<%@ page errorPage="/ErrorPage.jsp" contentType="text/html;charset=GBK"%>
<%request.setCharacterEncoding("GBK"); //设置请求字符集%>
<%@ page import="java.sql.*,java.io.*"%>
<%@ page import="landcenter.utility.*"%>
<%
//错误消息变量
String ErrMsg="";
//当前操作表名
String tablename=request.getParameter("tablename")==null?"":(String)request.getParameter("tablename");
//当前执行的sql
String sqlString=request.getParameter("sqlString")==null?"":(String)request.getParameter("sqlString");
//当前操作类型
String oprType=request.getParameter("oprType")==null?"":(String)request.getParameter("oprType");
//显示前几条记录
String recNum=request.getParameter("recNum")==null?"10":(String)request.getParameter("recNum");
%>
<script type="text/javascript" src="/js/main.js"></script>
<script>
/*
* 功能:表数据排序操作
* 参数:param 要排序的字段
*/
function orderOpr(param) {
//排序
var formObj = document.form1;
formObj.orderby_field.value = param;
if (formObj.orderby_sequence.value == "asc") {
formObj.orderby_sequence.value = "desc";
} else {
formObj.orderby_sequence.value = "asc";
}
//获得当前的查询sql
var curSql=document.getElementById("sqlString").value;
var pos=curSql.indexOf("order");
if (pos > 0){
var newSql= curSql.substring(0,pos);
document.getElementById("sqlString").value=newSql+"order by "+param+" "+formObj.orderby_sequence.value;
} else {
document.getElementById("sqlString").value=curSql+" order by "+param+" "+formObj.orderby_sequence.value;
}
formObj.action = "table.jsp";
formObj.submit();
}
/*
* 功能:对表进行更新操作
* 参数:priName 主键名
* priValue 主键值
* columnName 更新的字段名
* columnValue 更新的字段值
*/
function updateData(priName,priValue,columnName,columnValue){
var tablename="<%=tablename%>";
var sqlStr="update "+tablename+ " set "+columnName+ "='"+columnValue +"' where "+priName+"='"+priValue+"'";
//sqlStr=encodeURIComponent(sqlStr);
if (confirm("确实要执行SQL语句:"+sqlStr+"吗?")==false){
return;
}
var sUrl = "/WebTest?operation=update&sql="+sqlStr;
var result=getExeURLRsult(sUrl);
//alert(result.length);
//result>0?alert('成功'):(result==0?alert('无此记录或SQL有错'):alert('失败'));
result.length>2?alert("操作失败,原因可能如下/n"+result):(result>0?alert("修改成功!"):(result==0?alert('无此记录或SQL有错'):alert('失败')));
}
/*
* 功能:对表进行删除操作
* 参数:priName 主键名
* priValue 主键值
*/
function deleteData(priName,priValue){
var tablename="<%=tablename%>";
var sqlStr="delete "+tablename+ " where "+priName+"='"+priValue+"'";
if (confirm("确实要执行删除操作吗?SQL语句为:"+sqlStr)==false){
return;
}
var sUrl = "/WebTest?operation=update&sql="+sqlStr;
var result=getExeURLRsult(sUrl);
//alert(result.length);
//result>0?alert('成功'):(result==0?alert('无此记录或SQL有错'):alert('失败'));
result.length>2?alert("操作失败,原因可能如下/n"+result):(result>0?alert("删除成功!"):(result==0?alert('无此记录或SQL有错'):alert('失败')));
form1.action = "table.jsp";
form1.submit();
}
/*
* 功能:执行sql操作
*/
function execSql(){
var sqlStr=document.getElementById("sqlString").value;
var tableName=document.getElementById("tabNameSel").value;
var len=(sqlStr.split("select")).length-1;
if (1==len){
form1.action = "table.jsp";
form1.submit();
} else {
if (confirm("确实要执行此操作吗?SQL语句为:"+sqlStr)==false){
return;
}
var sUrl = "/WebTest?operation=update&sql="+sqlStr;
var result=getExeURLRsult(sUrl);
alert("执行结果:"+result);
//result>0?alert('成功'):(result==0?alert('无此记录或SQL有错'):alert('失败'));
//result.length>1?alert("操作失败,原因可能如下/n"+result):(result==0?alert("修改成功!"):alert('可能执行了非修改表结构的语句'));
changeTable(tableName);
form1.action = "table.jsp?oprType=alertTable";
form1.submit();
}
}
/*
* 功能:改变当前操作表
* 参数:tableName 表名
*/
function changeTable(tableName){
var recNum=document.getElementById("recNum").value-1+2; //要显示的记录数
if (""==recNum||null==recNum) { //如果要显示记录数输入为空则显示全部记录
form1.sqlString.value="select * from "+tableName;
} else { //如果输入了显示记录书则按输入值显示记录
form1.sqlString.value="select * from "+tableName+" where rownum<"+recNum;
}
form1.tablename.value=tableName;
}
/*
* 功能:变化样式css
* 参数:obj 操作对象
* cssName 样式名
*/
function changeCss(obj,cssName){
obj.className=cssName;
//obj.style.cssText="border:1;background:#F5FAFE;color:#0000ff;";
}
/*
* 功能:快捷键设置
* 参数:event事件源
*/
function acckey(ev){
if (ev.keyCode==119){ //F8执行sql
execSql();
}
//if ( ev.ctrlKey && ev.altKey && ev.keyCode == 79 )
//{
// alert("aaaaa");
//}
}
</script>
<html>
<style type="text/css">
<!--
.s1{border:1px solid #002142;background:#F5f3Fe;color:#ff0000;font-weight:600;}
.s2{border:0px }
* {font-family:"����", "������", "����_GB2312";font-size:12px;ackground-position:left top;}
body {margin:0; padding:0; background-color:#fff; font-size:12px; }
-->
</style>
<body οnkeydοwn="acckey(event);">
<br>
<font style="font-size:14pt;color:red;font-weight:600;">数据库简易操作工具:</font> <a href="table.jsp"></a><hr>
<form name="form1" action="table.jsp" method=post>
<!--显示数据库中的所有表名 begin -->
<table>
<tr>
<%
try{
DBUtil dbUtila = new DBUtil();
Connection con=dbUtila.getDefaultDBConnection();
//查询数据库中所有表名
Statement stmt=con.createStatement();
String selTableSql="select * from tab";
ResultSet rst=stmt.executeQuery(selTableSql);
if (!rst.isAfterLast()) { //如果查询到数据则显示 表名下拉列表 否则不显示
//生成表名下拉列表
out.println("<td>当前表:<select name=tabNameSel id =tabNameSel οnclick=changeTable(this.value) οnchange=changeTable(this.value)>");
String str="";
while(rst.next()){
str=rst.getString(1);
//将下拉列表选择当前操作的表
String isSelect="";
if (str.equals(tablename)) {
isSelect="selected";
}
out.println("<option value='"+str+"' "+isSelect+">"+str+"</option>");
}
out.println("</select></td>");
}
//关闭连接、释放资源
rst.close();
stmt.close();
con.close();
}catch(Exception e){
ErrMsg=ErrMsg+"查询表名失败,原因可能是:"+e.getMessage();
//e.printStackTrace();
}
%>
<td> 显示前<input id=recNum name=recNum type=text value='<%=recNum %>' style="text-align:right" size=3 οnblur="changeTable(tabNameSel.value)">条记录 </td>
</tr>
</table>
<!--显示数据库中的所有表名 end -->
<table>
<tr>
<td colspan=2><textarea name="sqlString" cols="100" rows="3" id="sqlString" ><%=sqlString %></textarea> </td>
</tr>
<tr>
<td ><input type=button value="执行(F8)" οnclick=execSql()></td><td ><input type=hidden value=查 询></td>
</tr>
</table>
<%--当前操作表名--%>
<input type="hidden" name="tablename" value="<%= tablename %>">
<%--当前操作类型--%>
<input type="hidden" name="oprType" value="<%= oprType %>">
<%-- 供排序用--%>
<input type="hidden" name="orderby_field" value="<%= request.getParameter("orderby_field")==null?"":request.getParameter("orderby_field").trim() %>">
<input type="hidden" name="orderby_sequence" value="<%= request.getParameter("orderby_sequence") ==null?"":request.getParameter("orderby_sequence").trim()%>">
<hr>
<!----------------------------------- 显示查询结果表格 begin ----------------------------->
<table border="0" cellspacing="1" bgcolor="#9933CC">
<%
if (null!=sqlString && !"".equals(sqlString)) {
try {
DBUtil dbUtilb = new DBUtil();
Connection con=dbUtilb.getDefaultDBConnection();
//查询列名
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery(sqlString);
System.out.println("sqlString"+sqlString);
ResultSetMetaData meta=rst.getMetaData();
//打印输出列名
int col=meta.getColumnCount();
out.println("<tr bgcolor=#FFFFFF>");
out.println("<td bgcolor=#acaaaa><input type=button name=chkbox value=操作></td>");
for(int i=1;i<col+1;i++)
{
String columnName=meta.getColumnName(i);
out.println("<td bgcolor=#acaaaa>");
out.println("<a href=javascript:orderOpr('"+columnName+"')>"+columnName+"</a>");
// out.println("类型: ");
// out.println(typeToString(meta.getColumnType(i)));
out.println("</td>");
}
out.println("</tr>");
//输出符合条件数据
int recordCount=0;
while(rst.next())
{
out.println("<tr bgcolor=#FFFFFF>");
String priName = meta.getColumnName(1);//当前表主键名
String strPri= rst.getString(1);//当前记录主键值
//out.println("<td><input type=checkbox name=chkbox value="+strPri+"></td>");
out.println("<td><input type=button name=chkbox value=del οnclick=deleteData('"+priName+"','"+strPri+"')></td>");
for(int i=1;i<col+1;i++)
{
String columnName=meta.getColumnName(i);
//String columnValue=getCol(rst,meta.getColumnType(i),i); //根据不同类型通过方法获得字段值
String columnValue=rst.getString(columnName); //直接getString获得字段值
out.println("<td><input class=s2 name="+columnName+recordCount+" type=text size=20 maxlength=4000 value='"+columnValue+"' οnchange=updateData('"+priName+"','"+strPri+"','"+columnName+"',this.value) οnclick=changeCss(this,'s1') οnblur=changeCss(this,'s2')></td>");
}
out.println("</tr>");
recordCount++;
}
out.println("查询到符合条件数据<b>"+recordCount+"</b>条,共显示了<b>"+col+"</b>个字段<br/>");
//关闭连接、释放资源
rst.close();
stmt.close();
con.close();
} catch(Exception e) {
//e.printStackTrace();
ErrMsg=ErrMsg+"查询数据失败,原因可能是:"+e.getMessage();
}
}
%>
</table>
<!----------------------------------- 显示查询结果表格 end ----------------------------->
</form>
<%
//输出错误信息
out.println("<br><b>"+ErrMsg+"</b>");
%>
</body>
</html>