在页面上执行sql语句,首先在页面上顶一个文本域,让用户输入需要执行的sql语句。
html代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
</head>
<body>
<div id ="defaultButtonBar" align="right" style="margin-right: 20px">
<button id="add" value="执行" onclick="find()" style=" 100px;height: 30px;">执行</button>
</div>
<div>
输入的sql:<br><textarea id="sql" rows="6" style=" 98%"></textarea>
</div>
<div id="divSql" style="color: red;height:400 "> <text id="str"></text></div>
</body>
</html>
然后最重要的是如何获取选中的文本并且让其在后台执行sql并返回信息给前台。
js代码如下:
/**
* 执行鼠标选中的文本(也就是sql语句)
*/
function find(){
var selectValue=null;
var sqlval=null;
if (document.selection){
selectValue=document.selection.createRange().text;//验证IE浏览器
} else if (window.getSelection){
// selectValue=window.getSelection();//其他浏览器
var obj = document.getElementById("sql");
var selstart = obj.selectionStart; //文字浮标选择的开始位置
var selend = obj.selectionEnd; //文字浮标选择的结束位置
selectValue= obj.value.substring(selstart,selend);
}
if(selectValue==null||selectValue==""){
var sqlval=document.getElementById("sql").value.toLocaleLowerCase();
}else{
sqlval=selectValue;
}
if(sqlval.indexOf("select")!=-1&&sqlval.indexOf("create")==-1){
sqlval = encodeURI(sqlval);
$.ajax({
type:'POST',
url:'findColumn',
data:"sqlval="+sqlval,
dataType:'text',
contentType:'application/x-www-form-urlencoded; charset=utf-8',
success: function(data){
var dataJson=eval('(' +data+ ')');
$("#str").text("");
$('#mytable').omGrid({
height : 400,
limit:0,
colModel :dataJson,
//contentType:'application/x-www-form-urlencoded; charset=utf-8',
dataSource:'findData.action?sqlval='+sqlval
});
}
, error:function(XMLResponse){
document.getElementById("tab").innerHTML="";
document.getElementById("tab").innerHTML='<table id="mytable"></table>';
var str=XMLResponse.responseText;
var str1=str.substring(str.indexOf("java"),str.lastIndexOf("</pre>"));
$("#str").text("");// 清空数据
$("#str").append(str1);
}
});
}else{
$.ajax({
type:'POST',
url:'updateAndDelete',
data:"sqlval="+sqlval,
dataType:'text',
limit:0,
contentType:'application/x-www-form-urlencoded; charset=utf-8',
success: function(data){
var dataJson=eval('(' +data+ ')');
$("#str").text("");
if(dataJson.update=='0002'){
alert("更新成功");
}else if(dataJson.del=='0001'){
alert("删除成功");
}else if(dataJson.insert=='0003'){
alert("插入数据成功");
}else if(dataJson.drop=='0004'){
alert("删除表成功");
else if(dataJson.create=='0005'){
alert("创建表成功");
}else{
alert("系统出错");
}
},error:function(XMLResponse){
var str=XMLResponse.responseText;
var str1=str.substring(str.indexOf("java"),str.lastIndexOf("</pre>"));
$("#str").text("");// 清空数据
$("#str").append(str1);
}
});
}
}
关于后台代码这里就不展示了,无非就是执行前台传过来的sql语句并返回一些相应的信息