起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10930|回复: 10

[结贴] SQL的采集

[复制链接]

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
QQ
发表于 2019-4-27 12:10:02 | 显示全部楼层 |阅读模式
版本: BeX5V3.2 小版本号:
数据库: Oracle 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 其它 浏览器: Chrome
我的具体业务是要从表A查询相关的内容 返回jsonarray的json数组
把这些数据的内容解析插入到表B中----

有没有相关的demo可以参考
谢谢

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
QQ
 楼主| 发表于 2019-4-27 12:17:36 | 显示全部楼层
简单点的,解析A表查询结果,把结果按字段插入到B表也可以。。。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36044
发表于 2019-4-28 08:47:45 | 显示全部楼层
那你可以直接用insert into select这样的sql语句操作啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2019-4-28 13:09:32 | 显示全部楼层
jishuang 发表于 2019-4-28 08:47
那你可以直接用insert into select这样的sql语句操作啊

谢谢回复,我是问题提主。。我知道是查询结果,从A表查询,返回一个列表(table),解析获得jsonarray,然后通过insert 或者update的方式插入B表....由于对你们产品和编程语言Java不是很熟悉,不知道有对应的案例demo可以参考
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36044
发表于 2019-4-28 13:21:05 | 显示全部楼层
如果是直接把表中的数据插入,不需要解析table啊
直接用insert into select一条sql语句就可以
https://www.runoob.com/sql/sql-insert-into-select.html

如果是需要获取数据修改然后再赋值,解析table可以参考http://docs.wex5.com/bex5-server-question-list-10027/
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2019-4-28 13:44:00 | 显示全部楼层
jishuang 发表于 2019-4-28 13:21
如果是直接把表中的数据插入,不需要解析table啊
直接用insert into select一条sql语句就可以
https://www. ...

谢谢回复,你的意思我理解了,但是解决不了我的问题。。。我的目标表B有B.a,B.b,B.c多列,他们的数据分别来自Aa,Ab,Ac的带条件查询结果。。。。我想到做的思路是对B先做初始化,然后根据Aa,Ab,Ac的查询结果,依次根据键值对B做Updatec操作。如查询Aa返回 zhangsan,17|lisi,18两条数据,把B表中的zhangsan,lisi的年龄信息更新.....所以用用到解析。。。。。我对json不是很了解,所以卡住了  当然也希望你提供更好更加简单的实现思路,这些都是在后台java文件中实现的
回复 支持 反对

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2019-4-28 13:50:21 | 显示全部楼层
public static JSONArray getUnSuitPercent(Map<String, Object> lstParameters)
        {
                String BeginDate = String.valueOf(lstParameters.get("fBeginDate")); //lstParameters.get("fBeginDate").toString();
                String EndDate =  String.valueOf(lstParameters.get("fEndDate"));//lstParameters.get("fEndDate").toString();
                StringBuilder resultMsg = new StringBuilder();
                JSONArray array = new JSONArray();
                Connection connM = null;
                String strWhere = "";
                if (!BeginDate.equals("")) {
                        strWhere += " b.DARRIVALDATE >=convert(datetime,'" + BeginDate + "',120)";
                }
                // 结束日期
                if (!EndDate.equals("")) {
                        strWhere += " and b.DARRIVALDATE <=convert(datetime,'" + EndDate + "',120)";
                }
                try {
                        getCurrentConfig();
                        initProperties();
                       
                       
                        Class.forName(driverMssql);
                        // 连接ERP数据库
                        connM = DriverManager.getConnection(urlMssql, nameMssql, passwordMssql);
                        connM.setAutoCommit(false);
                        String sqlMssql = "select * from (select a.cVenCode,ISNULL(SUM(CASE WHEN IBATCHCHKRESULT!=0 then 1 END)*1.0/SUM(1), 0) AS Rate"
                                        +"UnSuitPercent from PO_Pomain a left join QMCHECKVOUCHER b on b.CPOCODE = a.cPOID "
                                        + strWhere
                                        +"GROUP BY a.cVenCode)t where t.rate>0.001 ";
                        Statement statementM = connM.createStatement();
                        ResultSet setM = statementM.executeQuery(sqlMssql);
                        ResultSetMetaData md = setM.getMetaData();
                        int num = md.getColumnCount();
                        while (setM.next()){
                                JSONObject mapOfColValues = new JSONObject();
                                for (int k = 1; k <= num; k++) {
                                        mapOfColValues.put(md.getColumnName(k), setM.getObject(k));
                                        //在此处更新数据库
                                }
                                array.add(mapOfColValues);
                        }
                        connM.commit();
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                        resultMsg.append(e.getMessage());
                } catch (SQLException e) {
                        try {
                                connM.rollback();
                        } catch (SQLException e1) {

                                e1.printStackTrace();
                        } // 回滚
                        e.printStackTrace();
                } finally {

                        if (connM != null)
                                try {
                                        connM.close();
                                } catch (SQLException e) {

                                        e.printStackTrace();
                                }
                }
                return array;
        }


这段程序获取了jsonarray的内容,如果在前台,可以用loaddata函数直接转换成table  但是我想把他转写为update 语法更新B表   如果能提供学习此类程序写法或者学习资料,也是感激不尽
回复 支持 反对

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2019-4-28 13:57:32 | 显示全部楼层
涉及到两点知识:一是bex5后台update的写法,二是jsonarray的解析遍历;小白当伸手党
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36044
发表于 2019-4-28 14:51:12 | 显示全部楼层
1.你用的是sql,不是ksql,update就是sql标准的语法到网上查找
2.你用的是标准的ResultSet,要解析ResultSet也是java标准的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2019-4-29 07:45:33 | 显示全部楼层
jishuang 发表于 2019-4-28 14:51
1.你用的是sql,不是ksql,update就是sql标准的语法到网上查找
2.你用的是标准的ResultSet,要解析ResultSe ...

我的问题解决了,谢谢回复,辛苦了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-22 13:26 , Processed in 0.088275 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表