找回密码
 立即注册

QQ登录

只需一步,快速开始

zhulilong

金牌服务用户

7

主题

55

帖子

596

积分

金牌服务用户

积分
596
QQ
zhulilong
金牌服务用户   /  发表于:2022-3-24 22:13  /   查看:1915  /  回复:6
50金币
本帖最后由 zhulilong 于 2022-3-24 22:17 编辑

编写服务端命令,需要直接获取表数据,但是调用this.DataAccess.GetTableData时会出错。以下是测试数据和代码,返回的都是: {"ID":"出错了!!!"}

using GrapeCity.Forguncy.Commands;
using GrapeCity.Forguncy.Plugin;
using GrapeCity.Forguncy.ServerApi;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PicDataJson
{
    [Icon("pack://application:,,,/PicDataJson;component/Resources/Icon.png")]


    public class PicDataJson : Command, ICommandExecutableInServerSide, IServerCommandParamGenerator
    {
        public override string ToString()
        {
            return "JSON数据处理";
        }


        [DisplayName("返回结果至变量")]
        [Description("返回的结果是一个JSON对象。")]
        public string ReturnParam { get; set; }

        public IEnumerable<GenerateParam> GetGenerateParams()
        {
            yield return new GenerateNormalParam()
            {
                ParamName = ReturnParam
            };
        }

        public ExecuteResult Execute(IServerCommandExecuteContext dataContext)
        {
            Dictionary<string, object> data;
            try
            {
                TableData tableData= new TableData();
                data = tableData.GetData("ID","1");
                dataContext.Parameters[ReturnParam] = data;
            }
            catch (Exception ex) { dataContext.Parameters[ReturnParam] = ex.Message; }
            return new ExecuteResult();
        }
    }

    public class TableData : ForguncyApi
    {
        public Dictionary<string, object> GetData(string id, string val)
        {
            var valuepair = new ColumnValuePair()
            {
                ColumnName = id,
                Value = val
            };
            Dictionary<string, object> data = new Dictionary<string, object>();
            try
            {
                data = this.DataAccess.GetTableData("表格", valuepair);
            }
            catch
            {
                data.Add("ID", "出错了!!!");
            }
            return data;
        }
    }







附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

帮大佬预约了下周的远程~到时候我们一起看一下哈~ 状态更新:大佬已用其他方法实现~

6 个回复

正序浏览
zhulilong
金牌服务用户   /  发表于:2022-3-25 09:27:44
6#
本帖最后由 zhulilong 于 2022-3-25 09:29 编辑
zhulilong 发表于 2022-3-25 09:27
catch中输出错误是:Object reference not set to an instance of an object.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhulilong
金牌服务用户   /  发表于:2022-3-25 09:27:08
5#
David.Zhong 发表于 2022-3-25 09:14
大佬,建议在catch中输出报错信息哈~通过分析报错信息能更有目标性的去调查问题。
https://www.runoob.com ...

catch中输出错误是:Object reference not set to an instance of an object.
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-3-25 09:14:43
4#
大佬,建议在catch中输出报错信息哈~通过分析报错信息能更有目标性的去调查问题。
https://www.runoob.com/csharp/csharp-exception-handling.html
回复 使用道具 举报
zhulilong
金牌服务用户   /  发表于:2022-3-24 22:57:38
3#
app转转风 发表于 2022-3-24 22:42
你可以先用固定的代码试试。

我看你通过参数参数,字段名、字段值都是string,  而表中的ID字段类型应该 ...

之前试过,同样出错。
回复 使用道具 举报
app转转风悬赏达人认证 活字格认证
中级会员   /  发表于:2022-3-24 22:42:02
2#
  1. var valuepair = new ColumnValuePair()
  2.             {
  3.                 ColumnName = "ID”,
  4.                 Value = 1
  5.             };
复制代码
你可以先用固定的代码试试。

我看你通过参数参数,字段名、字段值都是string,  而表中的ID字段类型应该是整数,不确定这里的问题?
回复 使用道具 举报
最佳答案
最佳答案
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-3-24 22:13:58
来自 7#
本帖最后由 David.Zhong 于 2022-4-2 14:45 编辑

帮大佬预约了下周的远程~到时候我们一起看一下哈~
状态更新:大佬已用其他方法实现~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部