ADO.NET

ESLEYSANCHES 08/06/2007 00:49:10
#220260
Olá a todos um dia o nosso amigo MORDOR tinha enviado um código completo sobre como acessar um BD via ADO.NET, mais com a troca de HOST eu acabei perdendo, se ele mesmo ou outro usuário conseguir me ajudar ficaria grato.

Oque preciso ? A mesma coisa que eu acesso em VB6 via ADO acessar em VB.Net com ADO.NET.

Obrigado antecipadamente pessoal !!
T+ !!
USUARIO.EXCLUIDOS 08/06/2007 08:10:41
#220280
Na verdade, a ADO.NET é uma versão bem diferente da ADO.
Ela não possui mais um Recordset, apesar de possuir objetos Command e Connection.

Só para dar mais alguns exemplos, foram incluidos os ohjetos TableAdapter, DataSet, DataReader, os Command são mais coerentes e têm mais funcionalidades, os Connection "perderam" a funcionalidade do "Execute" para os Connection...

Também existem NameSpaces próprios e diferentes para utilizar dados via SQL Server, Oracle, ODBC, OleDB e MySQL, bem similares entre sí, mas cada qual com a sua funcionalidade específica, claro.

A ADO.NET também não possui mais nenhum objeto como os Catalog, Table, View, Column, Index e Key da ADOX, nem oferece mais suporte á criação ou compactação de dados de arquivos MS-Access, como a JRO, a DAO e a ADOX ofereciam.

Mas não se assuste.

Se você está migrando agora do 6 para o 7 ou 8, pode parecer que "arrancaram" a sua ferramenta principal de trabalho, mas é só a aparência. Você ainda pode utilizar as mesmas versões da ADOX, a JRO e mesmo a DAO que você usa no VB6 em suas aplicações DotNet. Só a ADODB mesmo é que não é aconselhável, pois há uma ADODB nativa no Framework.

E o uso da ADO.NET lhe permite agora coisas que as versões anteriores não podiam oferecer. Por exemplo, sua aplicação pode movimentar de forma sincronizada todas as tabelas relacionadas de seu banco de dados, sempre que o usuário selecionar um registro qualquer, sem que você tenha de escrever uma só linha para isso.

E os Command oferecem uma forma muito simplificada, via instruções SQL, de gravar arquivos ou fotos, datas e tipos de dados definidos pelo usuário. Você pode, por exemplo, criar uma estrutura (que no VB6 seria uma User Defined Type) e salvar a estrutura inteira em um só campo de um registro. Algo como gravar todos os dados de uma ficha de anamnese de um cliente em um dos campos do registro de
cadastro desse cliente.

Mas como as diferenças são razoáveis, leva algum tempo para você "entrar no embalo".

O José Carlos Macoratti não perdeu tempo, e já conta com uma série bem razoável de artigos que, com uma linguagem simples, ajudam bastante o neófito. Vale á pena.

A Microsoft, se você se dá bem com a lingua inglesa, disponibiliza diversos vídeos curtos de treinamento, na média com 16 Mb cada, que também valem o sacrifício.

O site Code Project também tem uma "carteira" interessante de projetos, dicas e artigos.

Não estou fazendo propaganda contra o VBMania, que foi, é e será sempre a melhor "casa" para o VB, mas como você está iniciando e há muito o que se informar, toda ajuda e material, imagino, serão bem-vindos.

Só uma dica: Se está começando mesmo com o DotNet, não utilize a versão 7 ou os Freameworks 1.0 / 1.1, pois há várias mudanças entre essas versões e as atuais. Os VBs 8 (2005) e 9 (ORCAS) trabalham bem nas Frameworks 2.0 e 3.0, e no caso do ASP.MET, melhor se sob IIS versões 5.0, 5.1 e 6.0. A versão 6 do IIS oferece maior suporte e novas funcionalidades, como servidor POP3, por exemplo. Já o VB7 só vai suportar parte das funcionalidades das Frameworks mais recentes e há alguns problemas com o IIS 6.

USUARIO.EXCLUIDOS 08/06/2007 09:21:41
#220289
Opa, esqueci-me de postar um exemplo.

Vou tentar exemplificar usando um trecho de código do projeto no qual estou trabalhando. Trata-se de uma função simples, que cnecta-se ao banco, avalia uma ocorrência e retorna um boolean, opcionalmente mostrando uma mensagem de alerta ao utilizador.

Uma vez que há na função a abertura do banco, a carga registros desde uma tabela e o processamento dos dados encontrados, deve ser um exemplo útil, ainda que não deva chegar aos pés daquele enviado por MORDOR.


Private cs As String = Application.CommonAppDataRegistry.GetValue("cfg003")


        Public Function CaixaAberto( _
ByVal TipoDeCaixa As TiposDeCaixas, _
Optional ByVal MostraAbertura As Boolean = False
) As Boolean
Dim lRet As Boolean = False
Dim dtOperação As Date = Nothing
Dim sq As String = "SELECT * FROM ABERTURAS WHERE TipoDeCaixa=@TIPODECAIXA AND Fechado=False;"
Dim cn As OleDbConnection = New OleDbConnection(cs)
Dim cm As OleDbCommand = New OleDbCommand(sq, cn)
Dim dr As OleDbDataReader = Nothing
Try
cn.Open()
cm.Parameters.AddWithValue("@TIPODECAIXA", TipoDeCaixa)
dr = cm.ExecuteReader
lRet = (dr.HasRows = True)
If MostraAbertura = True Then
If lRet = True Then
While dr.Read
dtOperação = dr("Abertura")
End While
End If
Dim sMsg As String = ""
sMsg += "O emissor encontra-se aberto desde " & _
dtOperação.Day & "/" & _
dtOperação.Month
MsgBox(sMsg, vbInfo, App)
End If
Catch ex As Exception
RaiseEvent Erro(ex.Message)
Finally
If Not dr Is Nothing Then
dr.Close()
dr = Nothing
End If
If Not cm Is Nothing Then
cm.Dispose()
cm = Nothing
End If
If Not cn Is Nothing Then
If cn.State <> ConnectionState.Closed Then cn.Close()
cn.Dispose()
cn = Nothing
End If
End Try
Return lRet
End Function



ESLEYSANCHES 08/06/2007 11:29:54
#220329
Ainda não analisei o código acima, mais vou dar uma analizada e posto.
Quanto aos framneWorks, eu utilizo o Visual Basic 2005 Express Edition ele utiliza FrameWork 2.0, seria a melhor opção para quem está desenvolvendo agora em .NET ?

Meus aplicativos .NET funcionariam em WIN98 ou Vista ?

Abraços e obrigado !!
MORDOR 08/06/2007 13:35:16
#220379
Oi, eu não me lembro do que tinha respondido antes, mas sempre que falo sobre ADO.NET procuro passar as boas práticas de programação. Dividir o projeto em camadas para abstrair a camada de dados da apresentação, facilita a manutenção e aumenta a escalabilidade do projeto. Se tiver uma aplicação desktop você consegue migrar para a web de forma bem mais simples. Procure usar o recurso de Providers Factories do .NET 2.0 se quiser flexibilidade para utilizar diferentes bancos de dados, eu recomendo a Enterprise Library que utiliza muitas das boas práticas de programação além de facilitar trabalhar com dados. Tem um tópico aberto sobre migração para web e dá pra ver o drama de quem postou, se você deixa todo o código de acesso a dados nos Forms reveja seus conceitos, na minha opnião já nem considero isso uma má prática e sim um erro de programação.

Patterns & Practices – Enterprise Library
ESLEYSANCHES 08/06/2007 15:45:36
#220407
Pois é MORDOR é dois, acesso a base de dados e conexões eu declaro todas em um FORM hehe

Você tinha postado um exemplo completo e simples de acesso a dados tipo tenho a tabela CADASTRO e quero que exiba em uma MessageBox todos os nomes, tipo RS("Nome")

entendes ? O professor explicou bem tbm, mais ainda estou dando uma analizada no código !!

Abraços !!
MORDOR 23/07/2007 20:42:52
#227314
Consulta
Dim connection As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=caminho_mdb")
Dim command As New OleDbCommand("SELECT * FROM nome_tabela", connection)
Dim reader As OleDbDataReader

connection.Open()
reader = command.ExecuteReader()

While reader.Read()
Console.WriteLine(reader("nome_campo"))
End While

reader.Close()
command.Dispose()
connection.Dispose()


Inclusão/Alteração/Exclusão
Dim connection As New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=caminho_mdb")
Dim command As New OleDbCommand("INSERT INTO nome_tabela ( nome_campo ) VALUES ( ? )", connection)

command.Parameters.AddWithValue("@nome_parametro", "valor_parametro")
connection.Open()
command.ExecuteNonQuery()
command.Dispose()
connection.Dispose()
Página 1 de 3 [21 registro(s)]
Tópico encerrado , respostas não são mais permitidas