Jump to content

Conectar a SQL Server Express apenas com código?


JLDR
 Share

Recommended Posts

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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other sites

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

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!

Link to comment
Share on other 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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other 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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other 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.

Link to comment
Share on other 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.

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Link to comment
Share on other 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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other 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!

Link to comment
Share on other 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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other 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.

Link to comment
Share on other 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.

<p style="text-align: center">Visita o site em <a class="bbc_url" href="http://www.sys4soft.com" rel="nofollow external" title="Link Externo">www.sys4soft.com</a> e subscreve o canal do YouTube.</p>

<p style="text-align: center"><span style="font-size: 12px;">"Mais importante que saber muito é saber aplicar o pouco que se sabe."</span></p>

Link to comment
Share on other 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 .

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.