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

QQ登录

只需一步,快速开始

查看: 8323|回复: 12

[结贴] 如何查询后台的一行记录以json返回前台

[复制链接]

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
发表于 2015-11-8 16:59:51 | 显示全部楼层 |阅读模式
10金币
有个需求是这样的,有时仅仅需要从数据库中取出一行数据,比如当前用户信息,不想写data,再query加载,太麻烦了,希望直接返回个json,后台水平比较差,照着Baas的相关例子没抄出来代码如下,求指点
           import java.sql.ResultSetMetaData;
        // 根据deviceid获取session的json格式的数据对象。把表的一行转成json传回
        private static void getSession(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
                // 参数序列化
                JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));

                // 获取参数
                String deviceid = params.getString("deviceid"); // 设备ID
                String sql = "select * from mp_session where fitem = '"+deviceid+"'";//查询语句
                // 获取数据源连接
                Connection conn = Util.getConnection(DATASOURCE_MP);
                PreparedStatement pstat = conn.prepareStatement(sql);
                try {
                        ResultSet rs = pstat.executeQuery();
                        ResultSetMetaData metaData = rs.getMetaData();
                        int columnCount = metaData.getColumnCount();
            JSONObject jsonObj = new JSONObject();  
            if(rs.next()){
                    // 遍历每一列  
                    for (int i = 1; i <= columnCount; i++) {  
                        String columnName =metaData.getColumnLabel(i);  
                        String value = rs.getString(columnName);  
                        jsonObj.put(columnName, value);  
                    }
                    Util.writeJsonToResponse(response, jsonObj);
            }
                } finally {
                        pstat.close();
                        conn.close();
                }
        }       


js调用是这样写的:
                getSession : function(deviceid){
                        var params = {
                                        "deviceid" : deviceid               
                                };
                                var success = function(resultData) {
                                        return resultData;
                                };
                                Baas.sendRequest({
                                        "url" : "/"+_acctUnit,
                                        "action" : "getSession",
                                        "params" : params,
                                        "success" : success
                                });                       
                }




轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595

0

主题

742

帖子

947

积分

高级会员

Rank: 4

积分
947
发表于 2015-11-9 15:58:54 | 显示全部楼层
现在需求是什么?
如果该问题得到解决,请及时跟帖,以便结贴
回复

使用道具 举报

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
 楼主| 发表于 2015-11-9 16:29:16 | 显示全部楼层
没取出来数,返回的值是undefined
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-11-9 18:44:57 | 显示全部楼层
ysk007 发表于 2015-11-9 16:29
没取出来数,返回的值是undefined

看执行的sql正确吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
 楼主| 发表于 2015-11-9 22:48:12 | 显示全部楼层
本帖最后由 ysk007 于 2015-11-9 22:49 编辑

我用通常的Baas方式是可以取到数的。String sql = "select * from mp_session where fitem = '"+deviceid+"'";//查询语句。这样的写法是对的吧?后台还不会调试,有相关的视频或文档介绍吗?前台调试传给后台的deviceid也是正常取数的,到了后台拼成的sql没有调试过
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2015-11-10 13:47:36 | 显示全部楼层
studio切换到java视图,然后把baas导入,在java文件中设置断点
然后参考
http://bbs.wex5.com/forum.php?mo ... 4&pid=164929261
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
 楼主| 发表于 2015-11-11 11:01:45 | 显示全部楼层
                getSession : function(deviceid){
                        var params = {
                                        "deviceid" : deviceid               
                                };
                                var success = function(resultData) {
                                         var s = resultData;
                                         alert(s.fname);
                                        return s;
                                };
                                Baas.sendRequest({
                                        "url" : "/"+_acctUnit,
                                        "action" : "getSession",
                                        "params" : params,
                                        "success" : success
                                });                        
                }
这个是js函数,alert那里还是可以取到数的,但是return后,我在其他地方引用var t = getSession(deviceid)则不能取到,是不是不能那样return?
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复

使用道具 举报

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
 楼主| 发表于 2015-11-11 13:37:43 | 显示全部楼层
搞定了,设置个全局变量就可以了,变量命名空间的规则理解的还是不到位啊。请结贴,感谢jishuang
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复

使用道具 举报

5

主题

32

帖子

88

积分

初级会员

Rank: 2

积分
88
QQ
发表于 2016-1-3 10:32:24 | 显示全部楼层
咋么设置全局变量?
回复

使用道具 举报

191

主题

688

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
QQ
 楼主| 发表于 2016-1-3 21:11:41 | 显示全部楼层
本帖最后由 ysk007 于 2016-1-3 21:13 编辑

                //获取session的json值
                getSession : function(){
                        var params = {
                                        "deviceid" : localStorage.getItem('deviceid'+'_'+_acctUnit)               
                                };
                        var success = function(resultData) {
                                        _session = resultData;
                                };
                        Baas.sendRequest({
                                        "url" : "/"+_acctUnit,
                                        "action" : "getSession",
                                        "params" : params,
                                        "success" : success
                                });        
                        return _session;
                }也不一定要全局变量,关键是之前的return写的地方不对
轻量化ERP--企业邦  网址:meiprocess.cn
qq:8269301
手机:13801998595
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 09:30 , Processed in 0.056389 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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