活字格 6.102版对内表查询记录时(DataAccess.GetTableData),当没找到记录会提示出错
本帖最后由 sz_xd 于 2020-11-26 00:24 编辑发现 活字格 6.102版在对内表查询记录时,当发现没找到记录时,会提示出错,程序中止,这不应该产生这错误,以前当没找到时,是返回data.Count=0 的值,具体引用文件参考,及 出错提示的内容,我摘录以下:
GetTableData 方法 - 活字格6.0帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)
https://help.grapecity.com.cn/pa ... ion?pageId=46172495
public class SampleApi : ForguncyApi
{
public void GetTableData()
{
//要获取的行的字段名及值
ColumnValuePair valuepair = new ColumnValuePair();
valuepair.ColumnName = "ID";
valuepair.Value = 1;
//使用GetTableData获取员工表中满足条件的行的记录
Dictionary<string, object> data = this.DataAccess.GetTableData("员工表", valuepair);//发现Bug 是没找到存在的ID号,会提示出错中止执行,正常没找到时,这是
if (data.Count != 0)
{
//使用AddTableData发法将获取的记录添加到数据表中
//this.DataAccess.AddTableData("员工表", data);
}
}
}
****************如果发现没找到存在内表的记录时,就会提示出以下错误,程序中止,这不应该的,以前这是就返回 data.Count=0 值。
Request Exception Happened-------------------------------
Path/customapi/myapi/testpostapi_pcregistred
{
"ClassName": "System.InvalidOperationException",
"Message": "没有任何记录存在。",
"Data": null,
"InnerException": null,
"HelpURL": null,
"StackTraceString": " at Forguncy.KatanaMiddleware.CustomApiDataAccess.GetTableData(String tableName, ColumnValuePair primaryKey)
at MyAPI.MyAPI.Hua_QueryBT_ToSring(String hua_queryB, String findcolumnName, String hua_Value, String hua_returncolumn)
at MyAPI.MyAPI.TestPostAPI_PcRegistred()
at Forguncy.KatanaMiddleware.CustomApiMiddleware.a(HttpContext A_0)
at Forguncy.KatanaMiddleware.CustomApiMiddleware.InvokeAsync(HttpContext context)
at Forguncy.KatanaMiddleware.ConcurrentControllMiddleware.InvokeAsync(HttpContext context)
at Forguncy.Server2.KatanaMiddleware.StartPageMiddleware.InvokeAsync(HttpContext context)
at Forguncy.Server2.KatanaMiddleware.HttpHeaderMiddleware.InvokeAsync(HttpContext context)
at Forguncy.KatanaMiddleware.ExceptionTraceMiddleware.InvokeAsync(HttpContext context)",
"RemoteStackTraceString": null,
"RemoteStackIndex": 0,
"ExceptionMethod": null,
"HResult": -2146233079,
"Source": "Forguncy.Server2",
"WatsonBuckets": null
}
本帖最后由 Simon.hu 于 2020-11-26 10:27 编辑
给您同步一下进度:问题已经在我们这边重现;我们已经开始调查问题了
Simon.hu 发表于 2020-11-26 10:25
给您同步一下进度:问题已经在我们这边重现;我们已经开始调查问题了
感谢胡总及活字格团队的重视,谢谢! 大佬,问题调查了一下,
主要是跟我们支持Linux,切换成.netcore平台有关
我们看了一下,从产品代码方面确实不好弄,我们会在继续研究一下看看能不能修改,但是短时间看希望比较渺茫
不过,咱在实际使用的时候,这样写代码就能差不多万无一失了(帮助手册已经修改:$)
本帖最后由 sz_xd 于 2020-11-27 16:55 编辑
Simon.hu 发表于 2020-11-27 09:11
大佬,问题调查了一下,
主要是跟我们支持Linux,切换成.netcore平台有关
我们看了一下,从产品代码方面 ...
感谢胡总指教,按你这方法暂用是可行的, try 预测在查询中可能出现的异常。捕获异常并对异常进行处理,就在catch中实现未找到的处理,这是可以过渡处理的,谢谢!
现胡总指教改用try 捕获异常 ,是可以的:
//使用GetTableData获取员工表中满足条件的行的记录
Dictionary<string, object> data = new Dictionary<string, object>();
try
{
data = this.DataAccess.GetTableData("员工表", valuepair);
}
catch
{
// 异常情况,可以自行添加日志记录等逻辑
}
我昨天晚上还暂改用为: 引用 Odata公式,将动态调用文符串进行拼接过渡,例如:
//使用GetTableData方法,获取通过OData查询字符串查询出的数据表中的记录
var data = DataAccess.GetTableData(string.Format("员工表?$select=姓名,部门,出生日期&$filter=ID eq 1")) as List<Dictionary<string, object>>;
if (data.Count != 0)
{
//使用AddTableData方法将查询出的记录添加到数据表中
this.DataAccess.AddTableData("员工表", data);
}
谢谢,大佬的支持的
:hjyzw:
页:
[1]