2009-10-05 52 views
1

我有一个没有返回任何值的亚音速查询。我认为这个问题出现在我的where子句中,尽管我不知道为什么。调试亚音速选择查询

我真正在寻找的是一种调试查询来查看Subsonic实际上正在吐出的SQL的方法。我知道有一种方法可以使用Inspect()对Query对象执行此操作,但是我使用Select对象(或者也可能使用SQLQuerys),因为我需要连接。亚音速选择有没有inspect()类型选项?

下面是我使用的代码:

Dim qry As New [Select]("Contract_NO") 
    qry.From(<table1>.Schema) 
    qry.InnerJoin(<table2>.<table2columnA>, <table1>.<table1columnA) 
    qry.Where(NonInfoleaseLessor.Columns.LessorCode).Like("mystring") 

如果我注释掉哪里行,我得到的结果的完整列表。它不喜欢它的一些东西,但我用那个where子句在数据库上手动运行查询,并且它可以工作。我怎样才能看到有什么不同?

+0

可以显示完整的查询? – TheVillageIdiot 2009-10-05 16:25:16

回答

3

您的查询的问题是您应该使用Contains(“mystring”)而不是Like(“mystring”)。

查看SQL的最佳方法是使用查询的BuildSqlStatement()方法。

+0

感谢您提供BuildSqlStatement()建议,这正是我所寻找的,并且帮助我解决了这个问题。问题不在于字符串周围缺少通配符;我放入字符串的内容正是我想要搜索过滤的内容。它最终成为我在WHERE子句中指定错误列的问题。 – 2009-10-05 18:48:48

+0

很高兴帮助。如果你正在寻找一个精确的短语,你应该IsEqualTo而不是Like来获得更好的表现。 – 2009-10-05 19:13:29

0

它可能与您选择的子句或您正在使用的列名有关。亚音速有几个列名称字段

OBJECT.xyzColumn

OBJECT.xyzColumn.QualifiedName

OBJECT.Columns.xyz

我曾在过去与这些玩得到我想要的价值。

1

使用[a]分析器来查看针对数据库实际执行的SQL。

正如亚当发现:

.Like("mystring") 

应该最有可能是

.Like("%mystring%")