1
  Public Function Delete_GST_Entry(ByVal GE_ID As Integer) As DataTable
    Try
        Using con As New SqlConnection(DF_Class.GetConnectionString())
            Dim ds As DataTable = New DataTable
            con.Open()
            Dim command As SqlCommand = New SqlCommand("Delete_GSTEntry", con)
            command.Parameters.AddWithValue("GE_ID", GE_ID)
            command.CommandType = CommandType.StoredProcedure
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(command)
            Dim table As DataTable = New DataTable
            adapter.Fill(ds)
            Return ds 
            con.Close()
        End Using
    Catch ex As SqlException
        MessageBox.Show(ex.Message, "Data Input Error")

    End Try

End Function

という警告が表示されますNULL reference could occur。私がしている間違いは何ですか?

警告:

「関数 'Delete_GST_Entry' は、すべてのコード パスで値を返すわけではありません。結果が使用されると、実行時に null 参照例外が発生する可能性があります。」

4

1 に答える 1

0

メソッドのすべての出口点 (リターン パス) は、メソッドのシグネチャが指定するものを返す必要があります。

次のように書き直します。

Public Function Delete_GST_Entry(ByVal GE_ID As Integer) As DataTable
   Dim dt As DataTable = New DataTable

   Try
        Using con As New SqlConnection(DF_Class.GetConnectionString())
             con.Open()
            Dim command As SqlCommand = New SqlCommand("Delete_GSTEntry", con)
            command.Parameters.AddWithValue("GE_ID", GE_ID)
            command.CommandType = CommandType.StoredProcedure
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(command)
            adapter.Fill(dt)
            con.Close()
        End Using
    Catch ex As SqlException
        MessageBox.Show(ex.Message, "Data Input Error")
    End Try

    Return dt    ' Note will be empty if stored proc call fails...
End Function

理想的には、接続を using ステートメントでラップする必要があります。

于 2013-09-04T05:34:24.593 に答える