2013-07-12 2 views
1

Веб-сервис VB.NET и ASMX. У меня по-прежнему возникают проблемы с получением данных после операции вставки.Нет данных после операции вставки VB.NET - Windows Forms and Web Service

Вот мой код вставки:

Try 
    'create a MySqlCommand to represent the query 
    If sqlConn.State = ConnectionState.Closed Then 
     sqlConn = New MySqlConnection(conStr) 
     sqlConn.Open() 
    End If 

    Dim myCommand As MySqlCommand = New MySqlCommand(strQuery, sqlConn) 
    If myCommand.ExecuteNonQuery() <> 0 Then 
     Result = True 
    End If 
Catch ex As Exception 
    Throw New ApplicationException("Error-luckie's server 2 " & ex.Message) 
Finally 
    sqlConn.Close() 
    sqlConn.Dispose() 
End Try 

strQuery будет простое утверждение вставки.

код для извлечения данных в виде набора данных следующим образом

Public Function ExecuteQuery(ByVal strQuery As String) As DataSet 
    Dim ds As DataSet = New DataSet 'create a DataSet to hold the results 

    Try 
     'create a MySqlCommand to represent the query 
     If sqlConn.State = ConnectionState.Closed Then 
      sqlConn = New MySqlConnection(conStr) 
      sqlConn.Open() 
     End If 

     Dim sqlcmd As MySqlCommand = sqlConn.CreateCommand() 
     sqlcmd.CommandType = CommandType.Text 
     sqlcmd.CommandText = strQuery 

     'create a MySqlDataAdapter object 
     Dim sqlDa As MySqlDataAdapter = New MySqlDataAdapter 
     sqlDa.SelectCommand = sqlcmd 

     Try 
      'fill the DataSet using the DataAdapter 
      sqlDa.Fill(ds, "Results") 
     Catch ex As Exception 
      Throw New ApplicationException("Error-luckie's server 1 " & ex.Message) 
     End Try 

    Catch ex As Exception 
     Throw New ApplicationException("Error-luckie's server 2 " & ex.Message) 
    Finally 
     sqlConn.Close() 
     sqlConn.Dispose() 
    End Try 

    Return ds 
End Function 

Я Вставка данных из одного потока и извлечением данных из других (не используется тот же экземпляр связи).

Это прекрасно работает, если я получаю данные через 15 минут.

Но я хочу получить результат сразу. Пожалуйста, помогите.

+1

Зачем вам нужно вложенный 'Try-Catch' блоки? Вы можете использовать различные типы исключений, используя один и тот же блок. –

+1

Сделайте хранимую процедуру, которая принимает входные данные, чтобы вставить запись и вернуть таблицу в результате. Вы должны получить данные в одной попытке. – NeverHopeless

+0

Вставка и просмотр с разных компьютеров – Luckie

ответ

0

Я хотел бы изменить метод, как показано ниже

Public Function ExecuteQuery(strQuery As String) As DataSet 
    Dim ds As New DataSet() 

    Try 
     Using con = New MySqlConnection(conStr) 'using statements... 
      Using cmd = New MySqlCommand(strQuery, con) 'using statements... 
       Using sqlDa = New MySqlDataAdapter(cmd) 'using statements... 
        sqlDa.Fill(ds, "Results") 
       End Using 
      End Using 
     End Using 
    Catch ex As Exception 
     Throw New ApplicationException("Error-luckie's server 1 " + ex.Message) 
    End Try 

    Return ds 
End Function 

Public Function ExecuteNonQuery(strQuery As String) As Boolean 
    Try 
     Using con = New MySqlConnection(conStr) 'using statements... 
      Using cmd = New MySqlCommand(strQuery, con) 'using statements... 
       con.Open() 
       If cmd.ExecuteNonQuery() > 0 Then ' I have change the condition 
        Return True 
       End If 
      End Using 

     End Using 
    Catch ex As Exception 
     Throw New ApplicationException("Error-luckie's server 2 " + ex.Message) 
    End Try 
    Return False 
End Function 
+0

Спасибо за все ваши комментарии. Нет. Все так же. Я изменил весь свой код на предыдущий и попытался. но такой же результат. Как я знаю так быстро, я перестрою свой веб-сервис и снова проверю его работу. как только я вставляю новую строку данных, она не возвращает новый один раз, и я также буду проверять одно и то же поведение на моем веб-сайте. Я работаю с локальным хостом. – Luckie

+0

@ Luckie вы проверяете новые записи непосредственно из веб-службы или из своего приложения? если вы проверите из своего приложения, вы можете обновить вопрос, с каким событием и как вы вызываете и показываете данные? – Damith

+0

Из моего приложения и функции ExecuteQuery в моем вопросе придется дать мне набор данных, используя простой запрос, например _SELECT SQL_NO_CACHE MAX (id_field) AS VALUE FROM invoices_ Я тоже пробовал здесь SQL_NO_CACHE. – Luckie

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

  • Нет связанных вопросов^_^