Я пытаюсь выполнить команду SQL, но я просто не могу понять, почему это не работает. Это, как я определил функцию «выполнить» в моем классе под названием «clsSQL»:ExecuteNonQuery не выполняется - vb.net
''#...
Private m_sConnectionString As String = String.Empty
''#...
Friend WithEvents m_objConnection As SqlConnection
Friend WithEvents m_objCommand As SqlCommand
''#...
Public Function OpenConnection() As Boolean
Try
m_objConnection = New SqlConnection(m_sConnectionString)
m_objConnection.Open()
Select Case m_objConnection.State
Case Data.ConnectionState.Open : Return True
Case Else : Return False
End Select
Catch ex As Exception
RaiseEvent OnError("OpenConnection", ex)
End Try
End Function
Public Function Execute(ByVal sQuery As String) As Boolean
Try
#If DEBUG_MODE Then
Debug.WriteLine(sQuery)
#End If
m_objCommand = New SqlCommand(sQuery, m_objConnection)
m_objCommand.ExecuteNonQuery()
m_objCommand = Nothing
Return True
Catch ex As Exception
RaiseEvent OnError("Execute", ex)
End Try
End Function
''#..
''#...
Это, как я звоню его:
Using oSQL As New clsSQL(My.Settings.projectConnectionString)
If oSQL.OpenConnection Then
strSQL = "INSERT INTO ... blablabla..."
oSQL.Execute(strSQL)
End If
End Using
код не вызывает никаких ошибок, то просто не сохраняя данные в базе данных. Ошибка не в команде SQL, я вручную проверил его;)
Например, я могу выполнить совершенно следующей функции без каких-либо проблем:
Public Function ToDataGrid(ByVal oDataGrid As DataGridView, _
ByVal sQuery As String, _
Optional ByVal sTable As String = "") As Boolean
Try
#If DEBUG_MODE Then
Debug.WriteLine(sQuery)
#End If
Dim objDataSet As New DataSet
objDataSet = ToDataSet(sQuery, sTable)
oDataGrid.DataSource = objDataSet.Tables(0)
objDataSet.Dispose()
objDataSet = Nothing
Return True
Catch ex As Exception
RaiseEvent OnError("ToDataGrid", ex)
End Try
End Function
И это, как я м, называя это:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Using oSQL As New clsSQL(My.Settings.projectConnectionString)
If oSQL.OpenConnection Then
oSQL.ToDataGrid(Me.DataGridView, "select * from table")
End If
End Using
End Sub
Возможно, мне просто нужна еще одна пара глаз, потому что я не вижу, что я делаю неправильно: |
Благодаря
_Please_ скажите мне, что вы не конкатенации пользовательские параметры непосредственно в переменную strSQL? Это очень плохо. Вместо этого используйте параметры запроса. –
Catch: End Try - DONT SWALLOW EXCEPTIONS – wefwfwefwe
@Joel: это просто жесткий SQL-запрос, без пользовательских параметров; @wefwfwefwe: fixed – RSilva