需求:写个SQL,根据SQL的列,动态更新Grid
例如: select id,name from table
grid显示:id,name的列和值
select * from table
grid显示:table 所有的列和值急!!追分相赠!!
给个思路 部分代码。谢谢!!
例如: select id,name from table
grid显示:id,name的列和值
select * from table
grid显示:table 所有的列和值急!!追分相赠!!
给个思路 部分代码。谢谢!!
Ext.QuickTips.init();
panel = function()
{
var p = new Ext.Panel(
{
title:'自定义SQL查询',
frame :true,
autoScroll :true,
region :'south',
layout :'border',
labelWidth :60,
// closable: true, //这个属性就可以控制关闭该from
bodyStyle : {
paddingTop : '3px'
},
collapsible:true, //右上角的伸缩按钮
// renderTo:'sqlQuery',
renderTo: Ext.getBody(),
tbar:[
{
text : '查询',
iconCls : 'search',
tooltip : '查询数据库',
handler:query
}]
,items:[formPanel]
});
}formPanel = function()
{
var fpcy =new Ext.FormPanel(
{
id:'fp',
title:'SQL查询工具',
collapsible:true,
renderTo:Ext.getBody(),
// defaultType:'textarea',
layout:'form',
hideLabels:false, // hideLabels:true 看不到SQL查询
autoHeight:true,
blankText:'请输入sql语句',
items: [
{
xtype:'textarea',
fieldLabel: '输入SQL语句',
id:'sqltext',
anchor:"100%"
},gridpanel
],
buttons:[
{
text:'查询',
iconCls : 'search',
tooltip : '查询数据库',
handler:query
},
{
text:'重写',
tooltip : '橡皮擦',
handler:function()
{
fpcy.form.reset();
}
}
],
draggable: {
insertProxy: false,//拖动时不虚线显示原始位置
onDrag : function(e){
var pel = this.proxy.getEl();
this.x = pel.getLeft(true);
this.y = pel.getTop(true);//获取拖动时panel的坐标
var s = this.panel.getEl().shadow;
},
endDrag : function(e){
this.panel.setPosition(this.x, this.y);//移动到最终位置
}
}
// =================
});
}query = function()
{
// Ext.Msg.wait('正在向服务器提交数据...');
var scope = this;
var ajx = Ext.Ajax.request({
url : 'sqlQuery!getSqlQueryList.action',
method:"post",
params:
{
sql : Ext.getDom('sqltext').value
},
success:function(dataAggregate)
{
// alert('success');
var scopt = this;
var arrayData = dataAggregate.responseText;
alert(dataAggregate.responseText);
var result = Ext.decode(dataAggregate.responseText);
/*
*
*/
gridpanel();
},
failure:function(dataAggregate)
{
// alert('failure');
alert('failure'+dataAggregate.responseText);
}
});
}
Ext.onReady(formPanel);sql = select id,xlmc from dm_xl fetch first 1 rows only (db2)package com.suypower.xssystem.action;import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;import com.suypower.xssystem.bean.ExtGridBean;
import com.suypower.xssystem.service.sqlQueryService;public class SqlQueryAction {
private static final String userResult = "user";
private String result;
private String sql; public String getSqlQueryList()
{
List list = new ArrayList();
JSONObject obj = new JSONObject();
ExtGridBean egb = new ExtGridBean();
try {
list = sqlQueryService.getSqlQueryService(sql);
egb.setRows(list);
egb.setSuccess(true);
System.out.println(JSONObject.fromObject(egb).toString());
} catch (Exception e)
{
// System.out.println("=============================SqlQueryAction Exceptoin==========================");
String getMessageException = e.getMessage();
// System.out.println("SQLgetMessageException"+getMessageException+"\n");
list.add(obj.accumulate(getMessageException,getMessageException));
}
this.setResult(JSONArray.fromObject(egb).toString());
return userResult;
}
/*
* get set method
*/
public String getResult() {
return result;
} public void setResult(String result) {
this.result = result;
} public static String getUserResult() {
return userResult;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}service:
package com.suypower.xssystem.service;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
import com.suypower.xssystem.dao.dbconn;public class sqlQueryService {
public static List getSqlQueryService(String sql)throws Exception
{
final List list = new ArrayList();
// 有没有对此封装调用 日后修改代码 同步
Connection con = new dbconn().getConnection();
Statement stmt = con.createStatement();
/*
* 查询SQL
*/
JSONObject obj = new JSONObject();
if((sql.indexOf("select") + sql.indexOf("delete") + sql.indexOf("update") + sql.indexOf("insert")) == -4)
{
list.add(obj.accumulate("非法SQL","非法SQL"));
}else if(sql.startsWith("select"))
{
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
int columnNum = rs.getMetaData().getColumnCount();
for(int i =1;i<=columnNum;i++)
{
System.out.println("列名:"+rs.getMetaData().getColumnName(i)+"列值:"+rs.getString(i));
obj.accumulate(rs.getMetaData().getColumnName(i),rs.getString(i));
}
}
list.add(obj);
}else if(sql.startsWith("update"))
{
stmt.executeUpdate(sql);
int updateNum = stmt.getUpdateCount();
// System.out.println("更新"+updateNum+"个");
list.add(obj.accumulate(String.valueOf(updateNum),String.valueOf(updateNum)));
}else if(sql.startsWith("delete"))
{
stmt.executeUpdate(sql);
int updateNum = stmt.getUpdateCount();
// System.out.println("删除"+updateNum+"个");
list.add(obj.accumulate(String.valueOf(updateNum),String.valueOf(updateNum)));
}else if(sql.startsWith("insert"))
{
stmt.executeUpdate(sql);
int updateNum = stmt.getUpdateCount();
// System.out.println("插入"+updateNum+"个");
list.add(obj.accumulate(String.valueOf(updateNum),String.valueOf(updateNum)));
}
return list;
}
}可返回数据:例如
{"extraData":null,"rows":[{"ID":"110025","XLMC":"雨石#1线"}],"success":true,"totalCount":0}
即:":[{"ID":"110025","XLMC":"雨石#1线"}]
现在要动态展示GRID 根据SQL