2010-11-23 49 views
0

我正在運行Visual Studio 2008,並被告知我具有創建#temp表的所有權限。我之前完成了這個工作,但由於某種原因,我在新應用程序中的sql總是返回0行。SQL語句在SQL Server中運行 - 不在Visual Studio中

我有存儲在我的應用程序事件的SQL連接字符串

Friend sqlConnProducts as String 

我創建一個SQL字符串,並將其傳遞給SQLExecute函數

Private Function SQLExecute(ByVal sSQL As String) As DataTable 
    Dim rtnTable As New DataTable() 
    Dim sConn As New SqlConnection(My.Application.sqlConRecvInsp) 
    Dim sCmd As New SqlCommand(sSQL, sConn) 
    Dim taAdapter As New SqlDataAdapter(sCmd) 

    Try 
     sConn.Open() 
     sCmd.CommandTimeout = 0 
     taAdapter.Fill(rtnTable) 
     sConn.Close() 
    Catch ex As Exception 
     MessageBox.Show("SQL Failed at: " & ex.Message & vbNewLine & ex.StackTrace) 
    End Try 

    sConn.Dispose() 
    sCmd.Dispose() 

    Return rtnTable 
End Function 

我甚至有一個debug.print( SQL)在SQL創建階段。當我從調試中運行輸出時,我得到大約7k條記錄。有什麼建議麼?

+4

你知道臨時表是什麼,對吧? – Lucero 2010-11-23 14:41:57

+0

對於您的實物信息,您應該將`sConn.Dispose()`和`sCmd.Dispose()`放入`Finaly`子句中,以便無論您的代碼是否拋出,它們都會被丟棄。此外,我建議一個很好的做法,不要說最好的做法,那就是將連接的實例化和命令的初始化包含在「Using ... End Using」塊中。 – 2010-11-23 14:45:00

回答

1

查看下面有關SQL Server臨時表的信息 - 它可能會提供一些有關正在發生的事情的指導。

http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx

分享和享受。

+0

感謝您的帖子。這很有幫助。從我可以告訴。在我運行select命令之前,我沒有失去範圍。 – 2010-11-23 15:48:15