2015-04-10 2 views
0

Я использую OledbConnection для компьютера AS400. Когда у меня есть оператор SQL, который ничего не вернет, он просто зависает над командой Fill.Вихревые соединения для подключения к VB.Net

Function ExecuteOLEDBQuery(ByVal cmdtext As String) As DataTable 

    Try 
     Dim connString As String = "Provider=IBMDA400;Persist Security Info=True;User [email protected]@USERID;[email protected]@PASSWORD;Data [email protected]@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 

Любые идеи?

ответ

0

Это может быть подключение к самому AS400. Попробуйте эту версию, которая располагает объектом в несколько ином порядке:

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

Это не сработает. Нет проблем с подключением. Другой оператор SQL, который вернет что-то, будет работать нормально. Это SQL, который не вернет ничего зависания в команде fill. – CodeMonkey

+0

Я начинаю думать, что то, что он получает, на самом деле не является ничем, а скорее действительно большим файлом, который вызывает серьезное замедление. – CodeMonkey

Смежные вопросы