我正在开发一个使用Versant对象数据库后端的c#项目,我正在尝试构建一个包含算术运算符的查询。文档声明它受支持但缺少任何示例。
我正在尝试建立这样的东西:
SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0
如果我在Object Inspector中尝试此语句,我会在' - '附近收到一个synthax错误。
任何人都有一个使用这种声明的工作VQL的例子吗?
由于
答案 0 :(得分:0)
我不确定Object Inspector是否知道arithmtic表达式的语法。但是,在您的代码中,您应该引用完全限定的类。那么你使用的语法应该是完全正常的。
查询查询=新查询(会话, “select * from com.yourCompany.yourClass where _qtyOrdered - _qtySent> 0”);
QueryResult result = query.execute();
我刚刚在我的一个课程上试过这个并且它工作正常。
干杯, -Robert
答案 1 :(得分:0)
使用C#和OQL,您必须确保选择正确的类范围。这是通过在类名中添加“Extent”后缀来完成的。例如,在我的Pet类中,我会在OQL字符串中识别出所有带有“PetExtent”的宠物。
通过在下面的代码中定义本地名字对象p,在谓词中访问类成员。查询引擎将评估任何算术表达式。
string query="SELECT * FROM PetExtent AS p WHERE p.Name = \"Ferris\" AND (p.age + 5) > 4";
IQueryResult result = scope.GetOqlQuery(query).Execute();
foreach (object o in result)
Out(o.ToString());
使用Versant的C#绑定测试OQL的最佳方法是使用集成到Visual Studio中的OQL查询浏览器。查看Visual Studio中的Versant菜单下拉列表。
最诚挚的问候,
德里克