• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JLDR

Conectar a SQL Server Express apenas com código?

13 mensagens neste tópico

Peço desculpa se o assunto já foi esclarecido, mas não encontrei resposta.

Estou a tentar 'entrar' na utilização do ADO.NET e, em particular, no acesso a bases de dados SQL Server Express, mas gostava de o fazer apenas através de código.

1º Construí uma base de dados SDF. Coloquei-a numa pasta (vamos imaginar que é uma pasta qualquer)

2º Quero fazer uma conexão a essa base de dados usando apenas código em VB.NET.

Após já ter testado várias versões de 'connection strings' para estabelecer a ligação, tem-me sempre surgido este erro que se segue:

http://img219.imageshack.us/img219/3771/errogh7.jpg

Demora algum tempo a aparecer, facto que julgo ser após expiração da Connection Timeout, não é?

Dúvida:

Partindo deste cenário (uma base de dados numa pasta) e apenas criando a ligação através de código, como é que defino a connection string para a ligação?

Alguém me pode muito resumidamente dar um exemplo simples de como conectar-me à base de dados através de código?

Desde já o meu obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora... acho que estás aí a confundir as coisas  :hmm:

Suponho que tu queiras usar uma base de dados usando apenas um ficheiro. Para isso recomendo que uses uma base de dados do Access (sim, eu disse que o access era uma BD! LOL) ou podes usar, o que está na moda, mas que não recomendo, um ficheiro XML ou um ficheiro de texto.

Uma vez que estás a usar o SqlClient suponho que queiras usar SQL logo só te sobra Firebird ou Access.

Vou-te dar a dica para o Access:

   Private Sub DoAnythingSQL()
      Dim Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\basededados.mdb"
      Dim Conn As New OleDb.OleDbConnection
      Dim sql As String = "Select * From Tabela"
      Dim cmd As New OleDb.OleDbCommand

      Dim da As New OleDb.OleDbDataAdapter
      Dim dt As New DataTable
      'comando para obter dados
      da.SelectCommand.CommandText = sql
      'definir a ligacao
      da.SelectCommand.Connection = Conn
      'limpar a tabela
      dt.Clear()
      'preencher com os dados
      da.Fill(dt)

      ' no caso de quereres inserir na tabela 
      sql = "Inser into Tabela (campo1,campo2) Values (valor1,valor2) "
      'definir o comando SQL que vais executar
      cmd.CommandText = sql
      'definir a ligacao
      cmd.Connection = Conn
      'usar o try pra não dar barracada 
      Try
         'abrir a ligacao
         cmd.Connection.Open()
         'executar a query
         If cmd.ExecuteNonQuery() <> 0 Then
            ' houve linhas afectas
            MsgBox("A linha foi inserida correctamente na tabela")
         Else
            MsgBox("ERRO: Os dados não foram inseridos!")
         End If
      Catch ex As Exception
      Finally
         If cmd.Connection.State = ConnectionState.Open Then
            'terminar a ligacao
            cmd.Connection.Close()
         End If
      End Try

   End Sub

Isto foi feito com base em qq coisa que tinha aqui! Deve funcionar!

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
1º Construí uma base de dados SDF

SDF ou MDF ? Eu só conheco mdf!

E está a utilizar VS2005 ou VS2008 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela resposta, morsa. E desculpem a minha ignorância nesta matéria de SQL Server.

1º Pensei que uma base de dados SQL Server Compact se tratava apenas de um ficheiro à semelhança de uma BD criada no Access. Afinal não é?

2º Para fazer uma aplicação que permita a gestao de uma base de dados local, usar BDs criadas pelo Access já não é uso corrente, pois não? Há alguma alternativa muito mais aconselhável?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SDF ou MDF ? Eu só conheco mdf!

E está a utilizar VS2005 ou VS2008 ?

Quando estava a experimentar a criação de uma base de dados SQL SERVER Express, o que acontece no projecto é o seguinte:

http://img404.imageshack.us/img404/4521/bdsqlqb3.jpg

http://img508.imageshack.us/img508/2712/bdsql1wa0.jpg

Penso que esse ficheiro contém toda a informação da base de dados ou estou completamente enganado?

PS: Estou a usar o VB express edition 2008.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
PS: Estou a usar o VB express edition 2008

Ok ainda não estou a usar o 2008 e no 2005 é mdf.

As bases de dados em access são ainda bastante utilizadas. Se a tua aplicação não vai crescer muito podes sempre utiliza-las.

Quando digo muito, quero dizer, algumas centenas de registos por dia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás um bocado equivocado.

".SDF" é Sql Server 2005 Compact Edition, normalmente usado em terminais, PDAs, etc.

Ora tu provavelmente estás a usar o SqlClient para o SqlServer2005. Se estás a usar o SqlServerCE tens de usar a API apropriada.

Tens de usar por exemplo SqlCeConnection em vez de SqlConnection.

Depois podes ver aqui como teres a ConnectionString apropriada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás um bocado equivocado.

".SDF" é Sql Server 2005 Compact Edition, normalmente usado em terminais, PDAs, etc.

Ora tu provavelmente estás a usar o SqlClient para o SqlServer2005. Se estás a usar o SqlServerCE tens de usar a API apropriada.

Tens de usar por exemplo SqlCeConnection em vez de SqlConnection.

Depois podes ver aqui como teres a ConnectionString apropriada.

Tens razão, Betovsky. Quando crio uma nova base de dados ele dá-me 3 opções (Access, SQL Server e SQL Server Compact). Eu estava a escolher a terceira. :)

Obrigado pelas dicas. Vou continuar a experimentar a ver se aprendo alguma coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que sim, podes continuar a usar os ficheiros MDF. Porque não? Mas daquilo que opinei numa outra thread de um outro fórum é a mesma coisa que usar um ficheiro de texto "avançado" ou escrita binária num ficheiro qualquer. Tens que ter é consciência que se trata sempre de um ficheiro e não um conjunto de ficheiros, como é o caso de um Sistema de Gestão de Base de Dados (SGBD). Todavia, como já foi dito, para inúmeras operações correntes e do dia a dia chega perfeitamente! Aliás, o Access inclusivamente tem vária ferramentas para optimizar os registos e indexação.

Espero ter ajudado. Se estás a começar com isto agora sim, acho que o Access será uma boa, senão a melhor, opção!

1abraço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com ADO e bases de dados criadas com o motor Jet.OLEDB do Access já eu trabalho há alguns anos.

Pensei que já estaria fora de uso e que houvesse uma alternativa muito mais apropriada para os mesmos fins.

Se houver, já agora, elucidem-me.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Com ADO e bases de dados criadas com o motor Jet.OLEDB do Access já eu trabalho há alguns anos.

Na verdade a Microsoft encoraja a migração das bases de dados de Access para SQL. Não é que o Access não suporte muita informação ou que seja lento, etc., mas sim porque é a aposta da marca. Existe inclusive algumas versões gratuitas como o MSDE http://www.microsoft.com/downloads/details.aspx?familyid=413744d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en

No entanto a escolha da base de dados se se justificar é sempre um ponto importante. Uma licença de SQL Server é cara e muitos cliente não estão para isso.

Para cada projecto deve-se ter em conta o tipo de informação que necessita guardar, que tipo de manutenção é necessário fazer, se é preciso usar stored procedures ou não, etc.

É esse tipo de perguntas que deves de fazer e ponderar na escolha.

Tenho varias aplicações a usar o Access com bastantes utilizadores a trabalhar em simultâneo e com centenas de registo diários sem problemas, embora pessoalmente prefira o SQL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho varias aplicações a usar o Access com bastantes utilizadores a trabalhar em simultâneo e com centenas de registo diários sem problemas, embora pessoalmente prefira o SQL.

Mesmo escolhendo uma base de dados do Access para guardar os dados, existe uma diferença muito grande de performance entre usar a libraria adodb.dll (vs) ado.net?

Sei que não é difícil migrar de um modo de gestão de base de dados para o outro (antigo para recente), mas vocês conhecem grandes diferenças ao nível da performance?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Mesmo escolhendo uma base de dados do Access para guardar os dados, existe uma diferença muito grande de performance entre usar a libraria adodb.dll (vs) ado.net?

Bem, não qual achas que é mais rápido, mas normalmente o Access é mais rápido do que o SQL (pelo menos se não for demasiada informação). Mas existem outras coisas que valem mais do que a rapidez, com a segurança de dados, manutenção, backups, etc. Já tive alguns problemas com bases de dados corrompidas (é verdade que a reparação do Access resolveu) mas com o SQL isso nunca me acontece.

Sei que não é difícil migrar de um modo de gestão de base de dados para o outro (antigo para recente), mas vocês conhecem grandes diferenças ao nível da performance?

Mudar até pode ser facil, e digo pode porque existem coisas que se fazem em Access que não se fazer (pelo menos de uma forma simples) em SQL. Existe um wizard para a migração que não resolve todas as query's. Já quanto ao código a mudança pode ser bastante simples ou não .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora