2013-02-12 74 views
0

我寫了一個查詢,它在.NET應用程序和SQL Server中都能正常工作。查詢在SQL Server中成功執行但在.NET中不成功

但是,當我用廣泛的參數進行測試時,我發現對於那個特殊情況,它沒有在.NET應用程序中顯示任何內容,但在SQL Server中顯示結果。

我試過谷歌,沒有結果有點奇怪。所以,我在這裏問。

這是我的查詢:

SELECT DISTINCT 
     tblCustomers.customerID AS Customer#, 
     tblCustomers.firstName + ' ' + tblCustomers.surname AS Name, 
     tblCustomers.street AS Street, 
     tblCustomers.suburb AS Suburb, 
     tblCustomers.postCode AS Postcode, 
     tblCustomers.state AS State, 
     tblCustomers.country AS Country, 
     tblCustomers.phone AS [Phone No.], 
     tblCustomers.fax AS Fax, 
     tblCustomers.mobilePhone AS [Mobile Phone], 
     tblCustomers.email AS [E-mail] 
    FROM  
     tblCustomers 
    INNER JOIN 
     tblProduct_Backorder ON tblCustomers.customerID = tblProduct_Backorder.customerId 
    WHERE  
     (tblCustomers.customerID IN 
       (SELECT  
        customerId 
       FROM   
        tblProduct_Backorder AS tblProduct_Backorder_1 
       WHERE  
        (productId IN 
          (SELECT  
           productID 
          FROM 
           tblProducts 
          WHERE  
           (skuCode = 76761) 
        ) 
       ) 
      ) 
     ) 

這查詢不工作skuCode = 76761,但這一工作在SQL Server中的罰款。

謝謝。

+2

我們這裏沒有足夠的信息來真正回答。你是否連接到不同的數據庫?你真的執行了查詢嗎?你使用什麼代碼? Blah blah – 2013-02-12 02:09:49

+0

好的,我爲此道歉。我只是將我的Gridview與SQL數據源連接起來,並且我提到了參數化查詢本身。所以,我沒有寫任何代碼來連接數據庫。 – 2013-02-12 02:20:33

+1

您的ASP.net代碼不正確或連接字符串錯誤。巧合的是,你沒有向我們展示過這些東西。 – RBarryYoung 2013-02-12 03:30:43

回答

1

你真的沒有足夠的信息給我們,甚至開始猜測導致問題的原因。在平均時間試試這個,而不是你的查詢:

SELECT c.customerID AS [Customer#], 
     c.firstName + ' ' + tblCustomers.surname AS Name, 
     c.street AS Street, 
     c.suburb AS Suburb, 
     c.postCode AS Postcode, 
     c.state AS State, 
     c.country AS Country, 
     c.phone AS [Phone No.], 
     c.fax AS Fax, 
     c.mobilePhone AS [Mobile Phone], 
     c.email AS [E-mail] 
FROM dbo.tblCustomers c 
WHERE EXISTS (SELECT 1 
       FROM dbo.tblProduct_Backorder b 
       JOIN dbo.tblProduct p 
         ON b.productId = p.productId 
       WHERE p.skuCode = 76761 
         AND b.customerId = c.customerId);        

如果我正確理解你的表的關係,它會同時做少了很多的工作產生相同的結果。

對於你原來的問題,你也應該發佈.net代碼。另外,「沒有結果」是什麼意思?一個空的結果?超時?一個錯誤?

+0

我儘可能提供信息。我會嘗試這個查詢。謝謝你的幫助。 – 2013-02-12 02:38:04

+0

我試過這個,並給出相同的結果。你能告訴我這個查詢是如何工作的嗎?現在,我將嘗試使用.net應用程序。 – 2013-02-12 02:40:27

+0

我在asp.net的查詢生成器中試過了你的查詢,並發現了一些奇怪的行爲。當我替換直接值(比如說skuCode = 76761)時,它對兩個查詢都正常工作,但是在使用參數(例如skuCode = @s和@ s = 76761)嘗試時,那麼您的查詢將返回帶NULL值的結果,而我的查詢返回無結果。 – 2013-02-12 02:55:12

0

我在xQbert的評論幫助下找到了解決方案。我花了很多時間,並且看到了SQL Profiler中如何執行查詢。表tblProduts中的skuCode是nvarchar(6),表tblProduct_BackOrder是其整數。所以,我使用Convert()函數將其轉換爲相同參數的Integer。

相關問題