2010-11-23 60 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