Oledb连接挂起VB.Net

时间:2015-04-10 20:33:12

标签: vb.net oledb oledbconnection oledbcommand

我正在使用OledbConnection到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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

它可能是与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