0

我正在处理使用 Versant 对象数据库后端的 ac# 项目,并且我正在尝试构建一个包含算术运算符的查询。该文档声明它受支持,但缺少任何示例。

我正在尝试构建这样的东西:

SELECT * FROM _orderItemObject WHERE _qtyOrdered - _qtySent > 0

如果我在对象检查器中尝试这个语句,我会在“-”附近得到一个合成错误。

任何人都有使用这种语句的工作 VQL 的示例?

谢谢

4

2 回答 2

0

我不确定 Object Inspector 是否知道算术表达式的语法。但是,在您的代码中,您应该指的是完全限定的类。那么您使用的语法应该非常好。

查询 query = new Query( session, "select * from com.yourCompany.yourClass where _qtyOrdered - _qtySent > 0 ");

QueryResult 结果 = query.execute();

我刚刚在我的一门课上试过这个,效果很好。

干杯,-罗伯特

于 2010-06-08T22:41:17.037 回答
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 Menu 下拉菜单。

最好的祝福,

德里克

于 2010-06-09T04:19:54.907 回答