- 浏览: 5161178 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
最近使用AJAX技术来做东西,写了很多的JS代码,也分析了一些别人的JS程序,使用VS.net进行跟踪调试,积累了些经验,现在可以很流畅地使用JS来写些程序来满足自己的需要了。
我做的东西里有一项是通用的表格展示,服务器端使用DOM4J来转换生成XML数据,在客户端使用JS解析XML数据,然后在插件中展示数据,附带添加、删除及修改功能,这部分功能已经实现,基本上使用一个页面和一个Action(struts里的东东)就可以对任何表进行展示、添加、删除和修改。但对于查询,不太容易做到通用,想了好长时间,还是使用XML与JS来解决了。也就是使用XML来定义要查询的字段、类型,然后在客户端自动解释成表单。目前的版本功能很简单,没有数据验证功能,仅能用AND连接查询条件(不过好象实际使用中,多数时候都是用AND),更多功能在以后会进一步完善。
代码分为四个部分:
一、核心是解析XML形式的表单定义数据、生成表单、拼接SQL语句、并对表单面板进行控制的JS文件;其中XML数据可以是数据岛中定义的,可以是网页中的字符串,也可以是单独的XML文件,另外,XML数据可以使用异步的方式进行加载(这个功能借鉴了dhtmlXTree中的方法);
二、一个辅助的日期选择脚本,供日期类型字段选择日期用;
三、一个样式表文件;
四、一个例子网页;
下面我的核心代码贴在这里,详细的代码请到我的网络硬盘下载http://wallimn.gbaopan.com ,或发邮件向我索取。
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn
电邮:wallimn@sohu.com
博客:http://wallimn.iteye.com http://blog.csdn.net/wallimn
网络硬盘:http://wallimn.gbaopan.com
时间:2006-12-15
/***********本人原创,欢迎转载,转载请保留本人信息*************/
我做的东西里有一项是通用的表格展示,服务器端使用DOM4J来转换生成XML数据,在客户端使用JS解析XML数据,然后在插件中展示数据,附带添加、删除及修改功能,这部分功能已经实现,基本上使用一个页面和一个Action(struts里的东东)就可以对任何表进行展示、添加、删除和修改。但对于查询,不太容易做到通用,想了好长时间,还是使用XML与JS来解决了。也就是使用XML来定义要查询的字段、类型,然后在客户端自动解释成表单。目前的版本功能很简单,没有数据验证功能,仅能用AND连接查询条件(不过好象实际使用中,多数时候都是用AND),更多功能在以后会进一步完善。
代码分为四个部分:
一、核心是解析XML形式的表单定义数据、生成表单、拼接SQL语句、并对表单面板进行控制的JS文件;其中XML数据可以是数据岛中定义的,可以是网页中的字符串,也可以是单独的XML文件,另外,XML数据可以使用异步的方式进行加载(这个功能借鉴了dhtmlXTree中的方法);
二、一个辅助的日期选择脚本,供日期类型字段选择日期用;
三、一个样式表文件;
四、一个例子网页;
下面我的核心代码贴在这里,详细的代码请到我的网络硬盘下载http://wallimn.gbaopan.com ,或发邮件向我索取。
///////////////////////////////sqlgen.js/////////////////////////////////////// // JavaScript Document function sqlgen(fields){ this.dateind=0; this.panelini=false; if(typeof fields=="object") this.fields=fields; else this.fields=null; this.panelini=false; this.contab=document.getElementById("conditiontabbody"); this.whereclause=""; this.onokafter=function(sql){alert("条件子句为:"+sql+"\n点击后处理事件尚未添加,请定义onokafter函数。");}; this.test = function(){ return this.onokafter.apply(null, this); }; } function genbtnhook(self){ var okbtn = document.getElementById('beginsearch'); if(typeof okbtn!="undefined"){ okbtn.onclick=function(){return self.onsqlok.apply(self, []);}; } } sqlgen.prototype.onsqlok=function(){ //return null; this.whereclause = this.getsqlstring(); //alert(this.whereclause+this.dateind); if(this.onokafter!=null){ //this.onokafter(this.whereclause); //alert(this.whereclause); return this.onokafter.apply(null, [this.whereclause]); } } sqlgen.prototype.getsqlstring=function(){ //var contab = document.getElementById("conditiontabbody"); if(this.fields==null || typeof this.contab=="undefined")return ""; //alert(contab.tbody.innerHTML); var trs = this.contab.getElementsByTagName("tr"); var onerow=null; var desc, type, name; var c1,c2,v1,v2; if(typeof trs == "undefined")return ""; //var fields = document.all('xmlfields').XMLDocument.getElementsByTagName('Field'); var field=null; var re=""; for(var i=0; i<trs.length; i++){ onerow = trs[i]; c1 = onerow.getElementsByTagName("select")[0].value; if(c1=="")continue; desc = onerow.getElementsByTagName("span")[0].innerText; v1 = onerow.getElementsByTagName("input")[0].value; field = this.fields[i]; type = field.getAttribute('Type'); name = field.getAttribute('Name'); if(type=="String")v1="'"+v1+"'"; else if(type=="Date")v1="todate('"+v1+"','yyyy-mm-dd hh24:mi:ss')"; else if(type=="Number")v1=v1; else continue; if(c1!="" && v1!="")re = re + "("+name + " "+ c1 +" "+ v1 + ") and "; //type = onerow.getElementById("fieldtype").innerText; //desc = onerow.getElementById("fielddesc"); //alert(' desc='+desc+' c1='+c1+' v1='+v1+' type='+type+' name='+name); //break; } if(re!="") re =re.substr(0, re.length-5); return re; } sqlgen.prototype.generatepanel=function(){ //var fields = document.all('xmlfields').XMLDocument.getElementsByTagName('Field'); var field=null; var desc="", type=""; var newrow = null; var cell,arr; //var contab = document.getElementById("conditiontabbody"); for(var i=0; i<this.fields.length; i++){ field = this.fields[i]; desc = field.getAttribute('Desc'); type = field.getAttribute('Type'); newrow = this.contab.insertRow(); //newrow.setAttribute("height","20px"); arr = this.getcondition(type,desc); cell = newrow.insertCell(); cell.setAttribute("width","100px"); cell.setAttribute("align","right"); cell.innerHTML=arr[0]; cell = newrow.insertCell(); cell.setAttribute("width","290px"); cell.innerHTML=arr[1]; cell = newrow.insertCell(); cell.setAttribute("width","290px"); cell.innerHTML=arr[2]; } } sqlgen.prototype.getcondition=function(type,desc){ var arr = new Array(0); if(type=="String"){ arr[0] = '<span class="a" id="fielddesc">'+desc+'</span>'; arr[1] = '<select name="select" id="sqlcondition'+this.dateind+'" style="width:90px;">' + '<option value="">无限制</option>' + '<option value="=">等于</option>' + '<option value="like">象</option>' + '</select>' + '<input type="text" name="textfield" id="sqlvalue'+this.dateind+'" style="width:160px;" />'; this.dateind++;//从0开始 arr[2] = ' '; this.dateind++;//从0开始 } else if(type=="Number"){ arr[0] = '<span class="a" id="fielddesc">'+desc+'</span>'; arr[1] = '<select name="select" id="sqlcondition'+this.dateind+'" style="width:90px;">' + '<option value="">无限制</option>' + '<option value="=">等于</option>' + '<option value="<">小于</option>' + '<option value="<=">小于等于</option>' + '</select>' + '<input type="text" name="textfield" id="sqlvalue'+this.dateind+'" style="width:160px;" /> '; this.dateind++;//从0开始 arr[2] = '<select name="select" id="sqlcondition'+this.dateind+'" style="width:90px;">' + '<option value="">无限制</option>' + '<option value="=">等于</option>' + '<option value=">">大于</option>' + '<option value=">=">大于等于</option>' + '</select>' + '<input type="text" name="textfield" id="sqlvalue'+this.dateind+'" style="width:160px;" />' ; this.dateind++;//从0开始 } else if(type=="Date"){ arr[0] = '<span class="a" id="fielddesc">'+desc+'</span>'; arr[1] = '<select name="select" id="sqlcondition'+this.dateind+'" style="width:90px;">' + '<option value="">无限制</option>' + '<option value="=">等于</option>' + '<option value="<">小于</option>' + '<option value="<=">小于等于</option>' + '</select>' + '<input type="text" class="textInput" name="sqlvalue'+this.dateind+'" id="sqlvalue'+this.dateind+'" readonly ' + 'style="width:140px;" onclick="javascript:DateControl20(document.getElementById(\'sqlvalue'+this.dateind+'\'))" />' + '<input type="button" value="×" onclick="javascript:document.getElementById(\'sqlvalue'+this.dateind+'\').value=\'\';"/>'; this.dateind++;//从0开始 arr[2] = '<select name="select" id="sqlcondition'+this.dateind+'" style="width:90px;">' + '<option value="">无限制</option>' + '<option value="=">等于</option>' + '<option value=">">大于</option>' + '<option value=">=">大于等于</option>' + '</select>' + '<input type="text" class="textInput" name="sqlvalue'+this.dateind+'" id="sqlvalue'+this.dateind+'" readonly ' + 'style="width:140px;" onclick="javascript:DateControl20(document.getElementById(\'sqlvalue'+this.dateind+'\'))" />' + '<input type="button" value="×" onclick="javascript:document.getElementById(\'sqlvalue'+this.dateind+'\').value=\'\';"/>'; this.dateind++;//从0开始 //alert(arr[1]+"\n"+arr[2]); } else { arr[0]='类型不合法'; arr[1]='类型不合法'; this.dateind++;//从0开始 arr[2]='类型不合法'; this.dateind++;//从0开始 } return arr; } function paneldisptoggle(){ var panel = document.getElementById('searchpanel'); //alert(this.panelini); var left = (document.body.clientWidth-700)/2; if(left<=0)left=1; panel.style.left=left+"px"; //DispToggle('searchpanel'); panel.style.display = panel.style.display=="none"?"":"none"; } function paneldisptoggle2(){ var panel = document.getElementById('searchpanel'); //alert(this.panelini); panel.style.position="static"; panel.style.margin="0 auto"; //DispToggle('searchpanel'); panel.style.display = panel.style.display=="none"?"":"none"; } function placesqlgen(){ document.write('<div id="searchpanel" style="display:none">'); document.write('<div id="paneltitle">'); document.write(' <table width="680px" border="0">'); document.write(' <tr>'); document.write(' <td><span style="color:#000000" class="a">查询条件定制面板</span></td>'); document.write(' <td align="right"><input type="button" value="×" onclick="javascript:paneldisptoggle();"/></td>'); document.write(' </tr>'); document.write(' </table>'); document.write('</div>'); document.write('<div id="panelcontent">'); document.write('<table width="680px" height="180" border="1" align="left" cellpadding="0" cellspacing="0" id="conditiontab">'); document.write(' <tbody id="conditiontabbody">'); document.write(' </tbody>'); document.write('</table>'); document.write('</div>'); document.write('<div id="panelbottom">'); document.write(' <table width="680px" border="0">'); document.write(' <tr>'); document.write(' <td align="center">'); document.write(' <input type="button" value=" 确 定 " name="beginsearch" id="beginsearch" />'); document.write(' </td>'); document.write(' <td align="center">'); document.write(' <input type="button" value=" 取 消 " name="cancelsearch" '); document.write(' id="cancelsearch" onclick="javascript:paneldisptoggle();"/>'); document.write(' </td>'); document.write(' </tr>'); document.write(' </table>'); document.write('</div>'); document.write('</div>'); } function docloadXML(xmlString){ var xmldoc; try { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.loadXML(xmlString); } catch(e){ var parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlString,"text/xml"); } return xmlDoc; } //FileName也可以是个URL function docload(FileName){ var xmldoc; try { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load(FileName); } catch(e){ //对于netscape不知如何处理。以后再添加。 //下边的函数两个浏览器通用。纯属估计 return null; } return xmlDoc; } function docloadURL(url){ var xmlDoc=null; try{ xmlDoc = new XMLHttpRequest(); } catch(e){ xmlDoc = new ActiveXObject("Microsoft.XMLHTTP"); } xmlDoc.open("GET",url,false); xmlDoc.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlDoc.send(null); return xmlDoc.responseXML; } //异步装载XML数据。 function xmlkit(asyn){ if(typeof asyn=="undefined")this.asyn=true; else this.asyn=asyn; this.xmlDoc=null; this.dealxml=null; this.onloadAction=function(xmldoc){ //alert("装载完成!"+xmldoc.xml); if(this.dealxml!=null){ this.dealxml.apply(null,[xmldoc]); } }; } xmlkit.prototype.loadurlover=function(myxmldoc){ this.check=function(){ if(myxmldoc.onloadAction!=null){ if((!myxmldoc.xmlDoc.readyState)||(myxmldoc.xmlDoc.readyState == 4)){ myxmldoc.onloadAction(myxmldoc.xmlDoc.responseXML); myxmldoc=null; } } }; return this.check; } xmlkit.prototype.loadurl=function(filePath,postMode,postVars){ try{ if(this.xmlDoc==null) this.xmlDoc = new XMLHttpRequest(); this.xmlDoc.open(postMode?"POST":"GET",filePath,this.asyn); if(postMode) this.xmlDoc.setRequestHeader('Content-type','application/x-www-form-urlencoded'); this.xmlDoc.onreadystatechange=new this.loadurlover(this); this.xmlDoc.send(null||postVars); } catch(e){ if(this.xmlDoc==null) this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP"); this.xmlDoc.open(postMode?"POST":"GET",filePath,this.asyn); if(postMode)this.xmlDoc.setRequestHeader('Content-type','application/x-www-form-urlencoded'); this.xmlDoc.onreadystatechange= new this.loadurlover(this); this.xmlDoc.send(null||postVars); } }
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn
电邮:wallimn@sohu.com
博客:http://wallimn.iteye.com http://blog.csdn.net/wallimn
网络硬盘:http://wallimn.gbaopan.com
时间:2006-12-15
/***********本人原创,欢迎转载,转载请保留本人信息*************/
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18511编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2396部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3392两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 17731.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7656一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1253我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3258做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1152写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3973大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2364一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7503我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2748@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2075转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3077用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1747element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9786示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6575申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5300最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5285springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10398微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
8. **自动化脚本**:支持批量生成和执行SQL脚本,尤其在数据库初始化或迁移时非常有用。 在给定的文件名称“QuickSearch”中,虽然没有具体说明,但可以推测这可能是一个快速搜索功能,或者是工具中的一个模块,...
例如,模拟生成SQL时,我们可以将数据库表结构和字段名等信息作为数据模型,然后在模板中定义SQL语句的结构,通过Freemarker的`process`方法生成动态的SQL脚本。 Wsdl2Java工具是Apache CXF框架的一部分,它用于从...
名称:E10查用SQL语句集合 适用人群:ERP管理员 适用场景:E10ERP系统上线持续改善,SQL常用语句 功能描述:PO待交明细、出入库统计表、待领料清单、请购中品号无单价的品号清单、请购单中无品号采购信息的品号清单 ...
总的来说,"sql.zip_sql_自动sql语句"涉及的核心知识点包括SQL语言中的INSERT和UPDATE语句,以及如何通过ASP脚本进行数据库操作,特别是自动化生成SQL语句以提高工作效率。这样的工具对于数据库管理员和开发人员来说...
例如,"批复意见回填表单.doc"和"将处理人姓名与处理时间回填表单字段.doc"可能涉及到对审批流程记录的管理,通过SQL语句更新这些记录,确保流程的完整追踪。 3. **日常办公**:日常工作中,如文档权限管理是常见的...
2. **创建SQL查询**:要自动生成Insert脚本,我们需要获取数据库表的所有列名和数据。这可以通过TADOCommand组件的Execute方法执行SQL命令实现。例如,可以使用`SELECT * FROM TableName`获取所有数据,然后遍历结果...
SQL注入是一种攻击手段,攻击者通过将恶意SQL代码插入到查询字符串或表单输入字段中,从而操纵数据库执行非授权操作。这种攻击通常发生在Web应用中,当应用没有对用户输入进行足够的过滤和验证时,就可能成为攻击的...
Loadrunner 测试数据库性能测试 SQL 语句性能的脚本例子 Loadrunner 是一款性能测试工具,用于测试软件应用程序的性能和可扩展性。该工具可以模拟大量用户同时访问应用程序,从而测试应用程序的性能和可靠性。 ...
ASP(Active Server Pages)是一种微软开发的服务器端脚本技术,用于创建动态、交互式的Web应用...了解这些知识点,你可以创建更复杂的ASP应用程序,不仅限于多条件查询,还可以扩展到数据的插入、更新和删除等操作。
1. **条件查询**:`Query()` 函数展示了如何根据用户输入的条件进行SQL查询。它构建了一个SQL语句,筛选出`chaxun`表中`name`字段等于`combobox1`的值或`guige`字段等于`combobox2`的值的所有记录。这通常用于实现...
例如,如果有一个系统需要用户自定义表单,每个表单可能有不同的字段,这时就需要动态SQL。动态SQL创建表可能如下: ```sql DECLARE @sql NVARCHAR(MAX) = N'CREATE TABLE CustomForm ('; FOR EACH FIELD IN @...
标题中的“SQL住入原始脚本”指的是利用SQL注入技术来编写或执行的原始SQL命令,而“SQL注入python脚本”则表明我们将探讨如何使用Python编写脚本来自动化这一过程。 SQL注入攻击主要有三种类型:直列注入、延时...
在“基于ASP+SQL公交查询系统”中,ASP起到了数据处理和页面动态生成的关键作用。 在ASP中,开发者可以创建自定义的函数和过程,使用内置的对象如Request、Response、Server、Session和Application等。Request对象...
PHP自定义表单生成是开发过程中一个实用的技术,它允许开发者根据需求动态创建各种类型的用户输入表单,如文本域、单选按钮、复选框以及下拉列表等。这使得网站能够灵活地收集和处理用户数据,提高了开发效率。 一...
SQL注入是一种常见的Web安全漏洞,它允许攻击者通过输入恶意SQL代码,来操控目标数据库的查询语句。这种攻击主要针对那些使用结构化查询语言(SQL)进行数据操作的Web应用程序。攻击者通常会寻找Web表单、URL参数或...
在本场景下,我们关注的焦点是支持条件查询、Oracle数据库动态获取数据以及新增数据的功能。以下是对这些知识点的详细解释: 1. **条件查询**: 条件查询是用户可以根据特定条件(如关键词、日期范围、分类等)来...
- **读取(Read)**: 查询学生信息,用户输入查询条件,JSP发送请求到服务器,服务器执行SQL SELECT语句,返回结果集,再由JSP渲染成用户可读的形式。 - **更新(Update)**: 修改已存在的学生信息,用户选择要修改...
这里的"Querrymore"可能是表示查询更多或者更复杂查询的文件名,可能包含了具体的SQL脚本,用于处理不同类型的筛选条件。在实际开发中,这些SQL语句可能会通过预编译的PreparedStatement来执行,以防止SQL注入攻击。...
1. **SQL语句生成**:根据用户输入的参数,如表名、字段名、操作类型(查询、插入、更新、删除),自动生成对应的SQL语句。 2. **模板支持**:提供预设的SQL模板,用户可以根据需求选择或自定义模板,简化生成过程。...