2009-10-05 96 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%")