sql语句作为参数传递来显示数据库内容
2008-10-24 09:38
453 查看
第三个周的任务是用户可以自己在文本框中输入sql语句,点击确定后在当前页面上显示相应的表记录。
技术:ajax
实现背景:选择一种类型的数据库后,选择该库中的某个表,再选择该表的某些字段,然后能在当前页上显示了该表的内容,用表格形式显示。
要求:用户输入sql语句后,要对输入的sql语句进行一下语法检查,由于该目的是用户对当前库查询表,所以要有”from“字符串(此检查还不完善需改进)如果用户正确输入语法,但输入的表在当前库中没有,则不能正确执行,亦提示错误。正确输入sql后,即可在当前页面上显示所要的记录。当然对显示的表也要加上相应的表名,这个表名由于是在用户输入的字符串中,所以要通过一个函数来获取才行。下面我都会说下这些具体的判断怎么实现。
实现:要想将正确的sql语句查询出来,已经知道表了,还需二个参数,即当前表所在的库类型,当前库名,这两个参数在前面的任务中已经通过隐藏按钮的name和value值得到了,这样就可以在js中将这三个参数传给相应的jsp页面,运用写出的类对sql语句进行查询了。
调用的jsp页面:
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="diyibao.*" %>
<%
StrGet ss=new StrGet();
String databaseStyle= request.getParameter("databasestyle");
String databaseName= request.getParameter("databasename");
String datasql= request.getParameter("sql");
String path="";
String table=ss.Str(datasql);//判断能不能正确返回一个表名,因为我要在显示的表上加一个标题栏来显示当前表的表名。若datasql不包括一个表名,则返回一个"Error!",如有则返回表名。
if( "Error!" == table)
{
// out.print("SQL SYNTAX ERROR!");
out.print("SQL语法错误!");
}
else
{
SQLset example = new SQLset();
String result=example.sqlout(databaseStyle,databaseName,datasql);
//接着看下sql语句能不能正确执行,若能正确执行,则输出一个result,是显示表的字符串。若不能则输出"SQL执行错误!"
if ( result.equals("Error"))
{
//out.print("SQL EXCUTE ERROR!");
out.print("SQL执行错误!");
}
else
{
path += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" ><tr>";
path +="<td align=\"left\" style=\"background-color:#FFFFCC\" >";
path +="<div id=\"titlename\" >";
path +="<span id=\"edit\"><img id=\"edit\" src=\"images/edit.gif\" onClick=\"javascript:database_show();\"/></span>";
path +="<span id=\"editname\">";
path += table;
path +="</span>";
path +="</div>";
//path += "</td><th>";
path +="<td align=\"right\" style=\"background-color:#FFFFCC\">";
//path += "<span id=\"min\"><img id=\"min\" src=\"images/min.gif\" onclick=\"javascript:contentfade();\"/> </span>";
//path += "<span id=\"max\"><img id=\"max\" src=\"images/max.gif\" onclick=\"javascript:contentshow();\"/></span>";
path += "<span id=\"close\"><img id=\"close\" src=\"images/close.jpg\" onclick=\"javascript:databaseclose();\"/></span>";
path +="</td>";
path += "</tr>";
path += "<tr>";
path += "<td align=\"center\" colspan=2>";
path += result;
path += "</td>";
path += "</tr>";
path += "</table>";
response.setContentType("text/xml");
out.clear();
out.print(path);
}
}
//out.print(example.sqlout(databaseStyle,databaseName,datasql));z
%>
下面是服务器返回jsp页面时js如何接收的问题,看下xmlHttp_sql.responseText的内容是什么,如果有上述的两个错误之一,则弹出alert(xmlHttp_sql.responseText),这样就可以重新写sql语句。如果没什么错误码就正确在特定的位置显示jsp页面的结果。
function handleStateChange_sql(){
if(xmlHttp_sql.readyState==4){//请求完成
//alert("ok");
if(xmlHttp_sql.status==200){//成功得到请求内容
if("SQL语法错误!" == xmlHttp_sql.responseText.trim() || "SQL执行错误!" == xmlHttp_sql.responseText.trim())
{
alert(xmlHttp_sql.responseText.trim());
}
else
{
document.getElementById("grp3").innerHTML=xmlHttp_sql.responseText;
}
注意这里有一个问题就是从服务器上返回的字符串前后都有特殊的不显示的字符,("SQL语法错误!" == xmlHttp_sql.responseText.trim() || "SQL执行错误!" == xmlHttp_sql.responseText.trim())这句在调试的时候老是不能正确回应,即xmlHttp_sql.responseText的内容确定是"SQL执行错误!",但两者比较的时候也不相同。原来就是返回的字符串含有不显示字符的问题。使用函数把服务器返回的字符串前后的字符去掉主可以正确接收了。
用到的函数:String.prototype.trim = function() //这句的意思时在字符串原型中添加一个自定义的trim函数
{
return this.replace(/(^[\s]*)|([\s]*$)/g, "");
//含义是去掉字符串前面的空白字符和后面的空白字符
}
技术:ajax
实现背景:选择一种类型的数据库后,选择该库中的某个表,再选择该表的某些字段,然后能在当前页上显示了该表的内容,用表格形式显示。
要求:用户输入sql语句后,要对输入的sql语句进行一下语法检查,由于该目的是用户对当前库查询表,所以要有”from“字符串(此检查还不完善需改进)如果用户正确输入语法,但输入的表在当前库中没有,则不能正确执行,亦提示错误。正确输入sql后,即可在当前页面上显示所要的记录。当然对显示的表也要加上相应的表名,这个表名由于是在用户输入的字符串中,所以要通过一个函数来获取才行。下面我都会说下这些具体的判断怎么实现。
实现:要想将正确的sql语句查询出来,已经知道表了,还需二个参数,即当前表所在的库类型,当前库名,这两个参数在前面的任务中已经通过隐藏按钮的name和value值得到了,这样就可以在js中将这三个参数传给相应的jsp页面,运用写出的类对sql语句进行查询了。
调用的jsp页面:
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="diyibao.*" %>
<%
StrGet ss=new StrGet();
String databaseStyle= request.getParameter("databasestyle");
String databaseName= request.getParameter("databasename");
String datasql= request.getParameter("sql");
String path="";
String table=ss.Str(datasql);//判断能不能正确返回一个表名,因为我要在显示的表上加一个标题栏来显示当前表的表名。若datasql不包括一个表名,则返回一个"Error!",如有则返回表名。
if( "Error!" == table)
{
// out.print("SQL SYNTAX ERROR!");
out.print("SQL语法错误!");
}
else
{
SQLset example = new SQLset();
String result=example.sqlout(databaseStyle,databaseName,datasql);
//接着看下sql语句能不能正确执行,若能正确执行,则输出一个result,是显示表的字符串。若不能则输出"SQL执行错误!"
if ( result.equals("Error"))
{
//out.print("SQL EXCUTE ERROR!");
out.print("SQL执行错误!");
}
else
{
path += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" ><tr>";
path +="<td align=\"left\" style=\"background-color:#FFFFCC\" >";
path +="<div id=\"titlename\" >";
path +="<span id=\"edit\"><img id=\"edit\" src=\"images/edit.gif\" onClick=\"javascript:database_show();\"/></span>";
path +="<span id=\"editname\">";
path += table;
path +="</span>";
path +="</div>";
//path += "</td><th>";
path +="<td align=\"right\" style=\"background-color:#FFFFCC\">";
//path += "<span id=\"min\"><img id=\"min\" src=\"images/min.gif\" onclick=\"javascript:contentfade();\"/> </span>";
//path += "<span id=\"max\"><img id=\"max\" src=\"images/max.gif\" onclick=\"javascript:contentshow();\"/></span>";
path += "<span id=\"close\"><img id=\"close\" src=\"images/close.jpg\" onclick=\"javascript:databaseclose();\"/></span>";
path +="</td>";
path += "</tr>";
path += "<tr>";
path += "<td align=\"center\" colspan=2>";
path += result;
path += "</td>";
path += "</tr>";
path += "</table>";
response.setContentType("text/xml");
out.clear();
out.print(path);
}
}
//out.print(example.sqlout(databaseStyle,databaseName,datasql));z
%>
下面是服务器返回jsp页面时js如何接收的问题,看下xmlHttp_sql.responseText的内容是什么,如果有上述的两个错误之一,则弹出alert(xmlHttp_sql.responseText),这样就可以重新写sql语句。如果没什么错误码就正确在特定的位置显示jsp页面的结果。
function handleStateChange_sql(){
if(xmlHttp_sql.readyState==4){//请求完成
//alert("ok");
if(xmlHttp_sql.status==200){//成功得到请求内容
if("SQL语法错误!" == xmlHttp_sql.responseText.trim() || "SQL执行错误!" == xmlHttp_sql.responseText.trim())
{
alert(xmlHttp_sql.responseText.trim());
}
else
{
document.getElementById("grp3").innerHTML=xmlHttp_sql.responseText;
}
注意这里有一个问题就是从服务器上返回的字符串前后都有特殊的不显示的字符,("SQL语法错误!" == xmlHttp_sql.responseText.trim() || "SQL执行错误!" == xmlHttp_sql.responseText.trim())这句在调试的时候老是不能正确回应,即xmlHttp_sql.responseText的内容确定是"SQL执行错误!",但两者比较的时候也不相同。原来就是返回的字符串含有不显示字符的问题。使用函数把服务器返回的字符串前后的字符去掉主可以正确接收了。
用到的函数:String.prototype.trim = function() //这句的意思时在字符串原型中添加一个自定义的trim函数
{
return this.replace(/(^[\s]*)|([\s]*$)/g, "");
//含义是去掉字符串前面的空白字符和后面的空白字符
}
相关文章推荐
- html显示数据库中的字段内容为sql语句时,出现隐藏了换行等字符的问题解决
- 通过sql语句动态显示数据库内容到jtable
- 以数据库字段分组显示数据的sql语句(详细介绍)
- 利用SQL语句查找某数据库中所有存储过程包含的内容
- 织梦DedeCms用SQL语句调用数据库任意内容方法
- 插入sql语句01值时,在数据库中的查询时显示为1
- SQL语句:去掉数据库某字段内容包含的空格
- oracle中如何用sql语句显示当前的数据库名称?
- T-SQL 语句插入中文数据时数据库显示全是问号“???”的解决方法(数据库编码规则)
- MySQL显示数据库版本的SQL语句
- sql语句显示复选内容, indication 为复选框的累计value(整数),显示所有的
- 利用SQL语句查找某数据库中所有存储过程包含的内容(转)
- SQL语句恢复数据库时一直显示“正在还原”
- sql语句没问题,在数据库运行ok ,也查出了数据,但就是显示的时候报空指针异常..
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
- DedeCms用SQL语句调用数据库任意内容方法
- 织梦DedeCms用SQL语句调用数据库任意内容方法
- sql语句显示复选内容, indication 为复选框的累计value(整数),显示所有的
- 显示内容太多用...显示的SQL语句
- DedeCms用SQL语句调用数据库任意内容方法