Ir para o conteúdo

Acesso a dados para Access, MSSQL e Oracle

A classe descrita permite obter dados de bases de dados Access, Microsoft SQL ou Oracle

Importante: É extremamente importante que não se esqueçam de importar as referências no início do bloco de código.

Imports System.Data.OleDb
Imports System.Data.OracleClient
Imports System.Data.SqlClient

Public Class Class1

    Enum DataBaseType
        Access
        SQLServer
        Oracle
    End Enum

    ''' <summary>
    ''' Função GetDataFromSQL.
    ''' Retorna os valores obtidos na Query de entre varios tipos de Bases de Dados.
    ''' </summary>
    ''' <param name="strSQL">A Query a ser efectuada.</param>
    ''' <param name="strConnectionString">A ConnectionString para a base de dados.</param>
    ''' <param name="MyDataBaseType">O tipo de base de dados.</param>
    ''' <returns>Retorna um DataTable com a informação.</returns>
    ''' <remarks></remarks>
    Private Function GetDataFromSQL(ByVal strSQL As String, ByVal strConnectionString As String, ByVal MyDataBaseType As DataBaseType) As DataTable

        Dim myDataTable As New DataTable()

        Try

            Select Case MyDataBaseType ' Conforme a base de dados

                Case DataBaseType.Access 'Se Access

                    Dim myConnectionAcess As New OleDbConnection(strConnectionString)
                    Dim myCommandAcess As New OleDbCommand(strSQL, myConnectionAcess)
                    Dim myDataAdapterAcess As New OleDbDataAdapter(myCommandAcess)

                    'Inicia a conecção
                    myConnectionAcess.Open()

                    'Se está conectado há base de dados
                    If myConnectionAcess.State = ConnectionState.Open Then
                        'Preenche o DataTable
                        myDataAdapterAcess.Fill(myDataTable)
                        'Fecha a ligação
                        myConnectionAcess.Close()

                    Else 'Se não está conectado

                        'Envia alerta ao utilizador
                        MessageBox.Show("Não foi possivel estabelecer uma ligação a base de dados", "Erro")
                    End If

                Case DataBaseType.Oracle 'Se Oracle

                    Dim myConnectionOracle As New OracleConnection(strConnectionString)
                    Dim myCommandOracle As New OracleCommand(strSQL, myConnectionOracle)
                    Dim myDataAdapterOracle As New OracleDataAdapter(myCommandOracle)

                    'Inicia a conecção
                    myConnectionOracle.Open()

                    'Se está conectado há base de dados
                    If myConnectionOracle.State = ConnectionState.Open Then
                        'Preenche o DataTable
                        myDataAdapterOracle.Fill(myDataTable)
                        'Fecha a ligação
                        myConnectionOracle.Close()

                    Else 'Se não está conectado

                        'Envia alerta ao utilizador
                        MessageBox.Show("Não foi possivel estabelecer uma ligação a base de dados", "Erro")
                    End If

                Case DataBaseType.SQLServer 'Se SQLServer

                    Dim myConnectionSQL As New SqlConnection(strConnectionString)
                    Dim myCommandSQL As New SqlCommand(strSQL, myConnectionSQL)
                    Dim myDataAdapterSQL As New SqlDataAdapter(myCommandSQL)

                    'Inicia a conecção
                    myConnectionSQL.Open()

                    'Se está conectado há base de dados
                    If myConnectionSQL.State = ConnectionState.Open Then
                        'Preenche o DataTable
                        myDataAdapterSQL.Fill(myDataTable)
                        'Fecha a ligação
                        myConnectionSQL.Close()

                    Else 'Se não está conectado

                        'Envia alerta ao utilizador
                        MessageBox.Show("Não foi possivel estabelecer uma ligação a base de dados", "Erro")
                    End If

            End Select

            If myDataTable.Rows.Count > 0 Then 'Se existem resultados

                Return myDataTable 'Retorna os dados.

            Else 'Se não

                Return New DataTable 'Retorna um DataTable vazio.

            End If

        Catch e As Exception
            Return New DataTable
        End Try

    End Function

End Class