Oledb连接挂起VB.Net

Oledb连接挂起VB.Net,vb.net,oledb,oledbconnection,oledbcommand,Vb.net,Oledb,Oledbconnection,Oledbcommand,我正在使用OLEDB连接到AS400计算机。当我有一个不会返回任何内容的SQL语句时,它只是挂在适配器命令Fill上 Function ExecuteOLEDBQuery(ByVal cmdtext As String) As DataTable Try Dim connString As String = "Provider=IBMDA400;Persist Security Info=True;User ID=@@USERID;Password=@@PASSWORD

我正在使用OLEDB连接到AS400计算机。当我有一个不会返回任何内容的SQL语句时,它只是挂在适配器命令Fill上

Function ExecuteOLEDBQuery(ByVal cmdtext As String) As DataTable

    Try
        Dim connString As String = "Provider=IBMDA400;Persist Security Info=True;User ID=@@USERID;Password=@@PASSWORD;Data Source=@@SYSTEM"
        Dim as400 As New OleDb.OleDbConnection(connString)
        Dim cmd As New OleDb.OleDbCommand(cmdtext, as400)
        Dim adapter As New OleDb.OleDbDataAdapter(cmd)
        cmd.CommandTimeout = 60 'Doesn't work. It never times out.
        Dim dt As New DataTable
        as400.Open()
        adapter.Fill(dt) 'This is where it hangs
        as400.Close()
        adapter.Dispose()
        cmd.Dispose()
        Return dt
    Catch ex As Exception
        Return Nothing
    End Try

End Function

有什么想法吗?

可能是AS400本身的连接。尝试此版本,该版本以稍微不同的顺序处理对象:

Function ExecuteOLEDBQuery(cmdtext As String) As DataTable
    Using cn = New OleDbConnection("Provider=IBMDA400;Persist Security Info=True;User ID=@@USERID;Password=@@PASSWORD;Data Source=@@SYSTEM")
        cn.Open()
        Using da = New OleDbDataAdapter(cmdtext, cn)
            Dim dt = New DataTable
            da.Fill(dt)
            Return dt
        End Using
    End Using
End Function

这是行不通的。连接没有问题。另一个将返回某些内容的SQL语句可以正常工作。SQL不会返回任何东西,因为fill命令挂起。我开始认为它得到的不是什么,而是一个真正大的文件,它导致了主要的速度减慢。