none
Ajuda na conexã com o Banco de Dados C# RRS feed

  • Pergunta

  • Olá... sou um programador iniciante em c#. Resolvi criar um programa usando banco de dados em c#. Funciona perfeitamente no meu computador. Acontece que quando executo o mesmo programa em outro computador que não possua o visual e o sql server ele não funciona alegando que o meu programa possui erros não tratados ligados ao SQL. Pela minha interpretação isso ocorre porque não soube fazer a conexão direito.
    No curso que fiz de C# a única coisa que foi passado sobre banco é a conexão automática com o banco que o visual studio faz, tanto que o meu banco de dados foi todo estruturado dentro do visual studio. Tentei modificar a string de conexão colocando no lugar de |DataDirectory| o local específico tipo c:... mas mesmo assim não funciona.

    Na mensagem de erro diz. Ocorreu uma excessão não tratada .....
    Erro de rede oou específico à instância ao estabelecer a conexão com o SQL Server..... Erro 26 - Erro ao localizar Servidor/Instância Especificada
    segunda-feira, 11 de janeiro de 2010 15:36

Respostas

  • Sim, isso você deve fazer porque é uma aplicação local
    se a aplicação fosse em servidor na sua rede
    não precisaria alterar a string de conexao,
    contudo, deve se instalar a versão sql server e criar a base de dados lá também

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 16:30
  • Pra facilitar sua vida vou postar um método de conexão com a base que eu mesmo desenvolvi. ele é baseado no app.config


    Adicione um App.config ao seu projeto, e sete o seguinte texto em xml:


    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <!-- Nome/ip da instância do SQL Server -->
        <add key="Data Source" value="localhost" />
        <!-- Nome do usuário do SQL Server -->
        <add key="User ID" value="Login" />
        <!-- Senha do usuário do SQL Server -->
        <add key="Password" value="Senha" />
        <!-- Nome da Base de Dados no SQL Server -->
        <add key="Initial Catalog" value="BaseDeDados" />
        <add key="ClientSettingsProvider.ServiceUri" value="" />
      </appSettings>
    </configuration>


    Adicione esse método onde achar melhor, pra ler o app.config:

    //Nesse meu caso, o objeto de conexao conn não está declarado no método, você pode criar um, o meu é Estático e é válido pra todo o sistema!
    public static void OpenConnection()
            {
                try
                {
                    //Seta um objeto capaz de ler o App.Config
                    AppSettingsReader configurationAppSettings = new AppSettingsReader();

                    //Monta parcialmente a string de conexão lendo a partir do App.Config
                    string DataSource = configurationAppSettings.GetValue("Data Source", typeof(String)).ToString();
                    string UserId = configurationAppSettings.GetValue("User ID", typeof(String)).ToString();
                    string Password = configurationAppSettings.GetValue("Password", typeof(String)).ToString();
                    string InitialCatalog = configurationAppSettings.GetValue("Initial Catalog", typeof(String)).ToString();

                    //Monta a string de conexão
                    string ConnectionString = "Data Source=" + DataSource + ";";
                    ConnectionString += "User ID=" + UserId + ";";
                    ConnectionString += "Password=" + Password + ";";
                    ConnectionString += "Initial Catalog=" + InitialCatalog;

                    //Cria uma instância do atributo SqlConnection estático em memória
                    conn = new SqlConnection();

                    //Atribui a string de conexão e abre a conexão
                    conn.ConnectionString = ConnectionString;
                    conn.Open();               
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Houve um problema ao conectar com o Banco de Dados\n" +
                                    "Verificar a configuração no arquivo App.config\n\n" +
                                    ex.Message);
                    conn = null;
                }
            }




    Com essa metodologia, você pode deixar seu sistema dinâmico pra rodar onde lhe aprouver, porque você pode somente alterar o xml com os dados necessários, como nome do servidor ou base de dados. E pra alterar o xml app.config voce pode alterar sem sequer ter o visual studio na maquina, pode alterar com bloco de notas!

    Espero ter ajudado e espero que use o exemplo!
    segunda-feira, 11 de janeiro de 2010 18:11
  • Sugiro que procure mais a respeito de banco de dados.

    Exemplo: Como você quer guarda dinheiro no banco se não existe banco para guardar?

    É o mesmo em sua aplicação, como deseja salvar as informações se você não tem o banco de dados instalado no computador? A solução para isso seria acessar outro computador que tenha o banco de dados e guardar nele (no caso, servidor).

    Se você não quer instalar, acesse otro local que tenho o sql server, porem se o local estiver "desligado", você não opera.

    Att.
    TPS
    segunda-feira, 11 de janeiro de 2010 16:52
  • Tente o sql express edition
    ou então, talvez seja o caso de utilizar outra base de dados como mysql ou ate mesmo access.
    Problemas com capacidade de armazenamento é o caso de rever projeto,
    talvez mudar a base seja uma boa solução. Não adianta ter uma ferrari que corre a 300km/h se você só pode correr até 90km/h(anchieta)... na verdade adianta sim, mais só pra falar que tem uma ferrari entende hehe

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 16:52
  • Você deve repensar o projeto,
    talvez seja o caso de utilizar outro banco de dados
    ou no melhor caso que acho, acessar o banco em um servidor
    conforme thiago disse

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 17:00

Todas as Respostas

  • Pra executar em outro computador existem 2 soluções:

    1- Setar a string de conexão pra buscar uma base de dados pela rede, dizendo seu endereço ip ou nome do servidor que tem o sql instalado.

    2- Instalar o sql em cada maquina que for usar o sistema, e assim, setar a string de conexao pra localhost, assim sempre irá funcionar!
    segunda-feira, 11 de janeiro de 2010 15:45
  • Pra rodar local
    você deve ter instalado o sql no computador ou na rede

    e tem q alterar o caminho do banco ou ip de acordo com cada caso

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 15:49
  • Eu devo fazer isso mesmo que eu queira uma aplicação local?
    Eu tenho que instalar uma versão do sql server para cliente, ou a server mesmo
    segunda-feira, 11 de janeiro de 2010 15:55
  • Sim, isso você deve fazer porque é uma aplicação local
    se a aplicação fosse em servidor na sua rede
    não precisaria alterar a string de conexao,
    contudo, deve se instalar a versão sql server e criar a base de dados lá também

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 16:30
  • Ok obrigado cara
    segunda-feira, 11 de janeiro de 2010 16:31
  • Só me deixa entender uma coisa... tipo assim.... eu tenho que instalar o sql serve inteiro pra poder usar meu progrma? tipo meu programa tem uns 3 megas, o sql tem alguns gigas! Eu queria usar em um windows 98 com 2 Gb de Hd...
    E agora?
    segunda-feira, 11 de janeiro de 2010 16:36
  • Sugiro que procure mais a respeito de banco de dados.

    Exemplo: Como você quer guarda dinheiro no banco se não existe banco para guardar?

    É o mesmo em sua aplicação, como deseja salvar as informações se você não tem o banco de dados instalado no computador? A solução para isso seria acessar outro computador que tenha o banco de dados e guardar nele (no caso, servidor).

    Se você não quer instalar, acesse otro local que tenho o sql server, porem se o local estiver "desligado", você não opera.

    Att.
    TPS
    segunda-feira, 11 de janeiro de 2010 16:52
  • Tente o sql express edition
    ou então, talvez seja o caso de utilizar outra base de dados como mysql ou ate mesmo access.
    Problemas com capacidade de armazenamento é o caso de rever projeto,
    talvez mudar a base seja uma boa solução. Não adianta ter uma ferrari que corre a 300km/h se você só pode correr até 90km/h(anchieta)... na verdade adianta sim, mais só pra falar que tem uma ferrari entende hehe

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 16:52
  • Você deve repensar o projeto,
    talvez seja o caso de utilizar outro banco de dados
    ou no melhor caso que acho, acessar o banco em um servidor
    conforme thiago disse

    abraço,
    Leonardo B. Moreira - Web Developer .net with asp.net and C# - I know, it is only programming but I like it.
    segunda-feira, 11 de janeiro de 2010 17:00
  • Você poderia utilizar então o firebird, ele não chega a 100mb instalado (acho que bem menos que isso)
    segunda-feira, 11 de janeiro de 2010 17:13
  • Obrigado pessoal
    segunda-feira, 11 de janeiro de 2010 17:15
  • Pra facilitar sua vida vou postar um método de conexão com a base que eu mesmo desenvolvi. ele é baseado no app.config


    Adicione um App.config ao seu projeto, e sete o seguinte texto em xml:


    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <!-- Nome/ip da instância do SQL Server -->
        <add key="Data Source" value="localhost" />
        <!-- Nome do usuário do SQL Server -->
        <add key="User ID" value="Login" />
        <!-- Senha do usuário do SQL Server -->
        <add key="Password" value="Senha" />
        <!-- Nome da Base de Dados no SQL Server -->
        <add key="Initial Catalog" value="BaseDeDados" />
        <add key="ClientSettingsProvider.ServiceUri" value="" />
      </appSettings>
    </configuration>


    Adicione esse método onde achar melhor, pra ler o app.config:

    //Nesse meu caso, o objeto de conexao conn não está declarado no método, você pode criar um, o meu é Estático e é válido pra todo o sistema!
    public static void OpenConnection()
            {
                try
                {
                    //Seta um objeto capaz de ler o App.Config
                    AppSettingsReader configurationAppSettings = new AppSettingsReader();

                    //Monta parcialmente a string de conexão lendo a partir do App.Config
                    string DataSource = configurationAppSettings.GetValue("Data Source", typeof(String)).ToString();
                    string UserId = configurationAppSettings.GetValue("User ID", typeof(String)).ToString();
                    string Password = configurationAppSettings.GetValue("Password", typeof(String)).ToString();
                    string InitialCatalog = configurationAppSettings.GetValue("Initial Catalog", typeof(String)).ToString();

                    //Monta a string de conexão
                    string ConnectionString = "Data Source=" + DataSource + ";";
                    ConnectionString += "User ID=" + UserId + ";";
                    ConnectionString += "Password=" + Password + ";";
                    ConnectionString += "Initial Catalog=" + InitialCatalog;

                    //Cria uma instância do atributo SqlConnection estático em memória
                    conn = new SqlConnection();

                    //Atribui a string de conexão e abre a conexão
                    conn.ConnectionString = ConnectionString;
                    conn.Open();               
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Houve um problema ao conectar com o Banco de Dados\n" +
                                    "Verificar a configuração no arquivo App.config\n\n" +
                                    ex.Message);
                    conn = null;
                }
            }




    Com essa metodologia, você pode deixar seu sistema dinâmico pra rodar onde lhe aprouver, porque você pode somente alterar o xml com os dados necessários, como nome do servidor ou base de dados. E pra alterar o xml app.config voce pode alterar sem sequer ter o visual studio na maquina, pode alterar com bloco de notas!

    Espero ter ajudado e espero que use o exemplo!
    segunda-feira, 11 de janeiro de 2010 18:11
  • Com certeza usarei.... muito obrigado.... facilitou muito as coisas....
    • Sugerido como Resposta Kelly_patti sexta-feira, 4 de outubro de 2013 14:32
    segunda-feira, 11 de janeiro de 2010 19:37
  • isso está em XML bonitão,  nossa aplicação é em C#, portanto isso não adianta em nada, que diacho é isso????
    sexta-feira, 4 de outubro de 2013 14:32
  • amigo eu tenho o mesmo problema que tu , se tu conseguiu resolver dá um help pleaseeeeeeeeeeeeeeeeeeeeeeeeeeeeeee??
    sexta-feira, 4 de outubro de 2013 14:34
  • amigo eu tenho o mesmo problema que tu , se tu conseguiu resolver dá um help pleaseeeeeeeeeeeeeeeeeeeeeeeeeeeeeee??
    sexta-feira, 4 de outubro de 2013 14:34