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