none
Conexão com Sql Server RRS feed

  • Pergunta

  • Tenho um banco de dados e algumas tabelas já populadas. Doploquei um datagrid, criei uma conexão pelo wizard do C# e fiz um dataset. Liguei o grid a esses caras e ele carregou o nome das colunas. O que passa que essa tabela está populada e não consigo carregar os dados no Data Grid. Como eu abro a conexão? Falta alguma coisa a mais? Comecei a brincar com C# e já estou gostando. Esse trabalho é para a Facul, um tal de PIM que deve estar pronto nesse mes e ainda estou apnhando nisso.
    quinta-feira, 3 de junho de 2010 20:49

Respostas

  •  Segue exemplo para se conectar ao banco, realizar a instrução SQL (neste exemplo é a de INSERT no banco), gravar usando SQLCommand e fechar a conexão:

     

    try
          {
            //verifica se os campos estão com dados para poder gravar
            if (txtNome.Text != string.Empty && txtEndereco.Text != string.Empty
              && txtBairro.Text != string.Empty && ddlEstado.SelectedItem.ToString()
              != string.Empty && txtTelefone.Text != string.Empty && txtCelular.Text
              != string.Empty && txtEmail.Text != string.Empty)
            {
    
              //Instancio o SqlConnection, passando como parâmetro a string de conexão ao banco
              SqlConnection conn = new SqlConnection(@"Data Source=WELLINGT-45545B\SQLEXPRESS;
            Initial Catalog=Clientes;Integrated Security=True;Pooling=False");
    
              //Instancio o SqlCommand, responsável pelas instruções SQL e
              //Passo ao SqlCommand que a conexão que ele usará é o SqlConnection
              SqlCommand comm = new SqlCommand();
              comm.Connection = conn;
    
              //No CommandText do SqlCommand, passo a instrução SQL referente a inserção dos dados
              comm.CommandText = "INSERT INTO tbCLIENTES (NOMECLIENTE, ENDERECOCLIENTE, " +
                        " BAIRRO, ESTADO, TELEFONECLIENTE, CELULARCLIENTE, EMAILCLIENTE) " +
                //Nos Values, passo os valores parametrizados, referentes aos digitados pelo usuário nos controles
                        " VALUES (@NOMECLIENTE, @ENDERECOCLIENTE, @BAIRRO, @ESTADO, " +
                        "     @TELEFONECLIENTE, @CELULARCLIENTE, @EMAILCLIENTE) ";
    
              comm.Parameters.AddWithValue("@NOMECLIENTE", txtNome.Text);
              comm.Parameters.AddWithValue("@ENDERECOCLIENTE", txtEndereco.Text);
              comm.Parameters.AddWithValue("@BAIRRO", txtBairro.Text);
              comm.Parameters.AddWithValue("@ESTADO", ddlEstado.SelectedItem.ToString());
              comm.Parameters.AddWithValue("@TELEFONECLIENTE", txtTelefone.Text);
              comm.Parameters.AddWithValue("@CELULARCLIENTE", txtCelular.Text);
              comm.Parameters.AddWithValue("@EMAILCLIENTE", txtEmail.Text);
    
              //Abro a conexão, uso o método ExecuteNonQuery e fecho a conexão
              conn.Open();
              comm.ExecuteNonQuery();
              conn.Close();
    
              //Exibo ao usuário a mensagem de inserção efetuada com sucesso
              MessageBox.Show("Dados atualizados com sucesso!", "Mensagem",
                      MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
              MessageBox.Show("Informe os valores corretamente para completar o cadastro. " +
              "Somente os campos Celular e Email podem ficar vazios ", "Erro do Sistema",
              MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
          }
          catch (Exception)
          {
              MessageBox.Show("Ocorreu um erro ao gravar os dados!", "Mensagem de Erro",
                      MessageBoxButtons.OK, MessageBoxIcon.Error);
          }

     


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida | Dicas e artigos sobre .NET em http://programandodotnet.wordpress.com
    quinta-feira, 3 de junho de 2010 23:31

Todas as Respostas

  •  Segue exemplo para se conectar ao banco, realizar a instrução SQL (neste exemplo é a de INSERT no banco), gravar usando SQLCommand e fechar a conexão:

     

    try
          {
            //verifica se os campos estão com dados para poder gravar
            if (txtNome.Text != string.Empty && txtEndereco.Text != string.Empty
              && txtBairro.Text != string.Empty && ddlEstado.SelectedItem.ToString()
              != string.Empty && txtTelefone.Text != string.Empty && txtCelular.Text
              != string.Empty && txtEmail.Text != string.Empty)
            {
    
              //Instancio o SqlConnection, passando como parâmetro a string de conexão ao banco
              SqlConnection conn = new SqlConnection(@"Data Source=WELLINGT-45545B\SQLEXPRESS;
            Initial Catalog=Clientes;Integrated Security=True;Pooling=False");
    
              //Instancio o SqlCommand, responsável pelas instruções SQL e
              //Passo ao SqlCommand que a conexão que ele usará é o SqlConnection
              SqlCommand comm = new SqlCommand();
              comm.Connection = conn;
    
              //No CommandText do SqlCommand, passo a instrução SQL referente a inserção dos dados
              comm.CommandText = "INSERT INTO tbCLIENTES (NOMECLIENTE, ENDERECOCLIENTE, " +
                        " BAIRRO, ESTADO, TELEFONECLIENTE, CELULARCLIENTE, EMAILCLIENTE) " +
                //Nos Values, passo os valores parametrizados, referentes aos digitados pelo usuário nos controles
                        " VALUES (@NOMECLIENTE, @ENDERECOCLIENTE, @BAIRRO, @ESTADO, " +
                        "     @TELEFONECLIENTE, @CELULARCLIENTE, @EMAILCLIENTE) ";
    
              comm.Parameters.AddWithValue("@NOMECLIENTE", txtNome.Text);
              comm.Parameters.AddWithValue("@ENDERECOCLIENTE", txtEndereco.Text);
              comm.Parameters.AddWithValue("@BAIRRO", txtBairro.Text);
              comm.Parameters.AddWithValue("@ESTADO", ddlEstado.SelectedItem.ToString());
              comm.Parameters.AddWithValue("@TELEFONECLIENTE", txtTelefone.Text);
              comm.Parameters.AddWithValue("@CELULARCLIENTE", txtCelular.Text);
              comm.Parameters.AddWithValue("@EMAILCLIENTE", txtEmail.Text);
    
              //Abro a conexão, uso o método ExecuteNonQuery e fecho a conexão
              conn.Open();
              comm.ExecuteNonQuery();
              conn.Close();
    
              //Exibo ao usuário a mensagem de inserção efetuada com sucesso
              MessageBox.Show("Dados atualizados com sucesso!", "Mensagem",
                      MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
              MessageBox.Show("Informe os valores corretamente para completar o cadastro. " +
              "Somente os campos Celular e Email podem ficar vazios ", "Erro do Sistema",
              MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
          }
          catch (Exception)
          {
              MessageBox.Show("Ocorreu um erro ao gravar os dados!", "Mensagem de Erro",
                      MessageBoxButtons.OK, MessageBoxIcon.Error);
          }

     


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida | Dicas e artigos sobre .NET em http://programandodotnet.wordpress.com
    quinta-feira, 3 de junho de 2010 23:31
  • Eu ainda não testei o seu exemplo, vou fazê-lo agora. Fiz assim como abaixo e diz que não é possível abrir uma conexão física com o banco, pois o processo está sendo usado por outro. Eu fechei o Management do Sql, fechei a interface do banco e continua. Removi todos os dataset que construi no banco e assim mesmo continua a dar o erro. Eis meu exemplo, bem simplório.

    string

     

    connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Arquivos de programas\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\DB_UNIP.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True";

     

    SqlConnection sqlConn = new SqlConnection(connectionString);

    sqlConn.Open();

    sexta-feira, 4 de junho de 2010 00:15
  • Estranho cara, experimenta colocar a arroba antes das aspas, para que fique desta forma:

    connectionString = @"Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Arquivos de programas\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\DB_UNIP.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True" ;

    Não sei se tem a ver, mais quem sabe...

    Abraços.


    Se a resposta for útil, favor votar como útil para que ajude outros usuários com a mesma dúvida | Dicas e artigos sobre .NET em http://programandodotnet.wordpress.com
    sexta-feira, 4 de junho de 2010 01:06
  • Eu ainda não testei o seu exemplo, vou fazê-lo agora. Fiz assim como abaixo e diz que não é possível abrir uma conexão física com o banco, pois o processo está sendo usado por outro. Eu fechei o Management do Sql, fechei a interface do banco e continua. Removi todos os dataset que construi no banco e assim mesmo continua a dar o erro. Eis meu exemplo, bem simplório.

    string

     

    connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Arquivos de programas\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\DB_UNIP.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True" ;

     

     

    SqlConnection sqlConn = new SqlConnection (connectionString);

    sqlConn.Open();

     


     Olá amigo porque tenta abrir o MDF e não conectar no servidor? Utilize como no exemplo que o amigo passou, o Data Source indica a instância que você irá utilizar.

     

    SqlConnection conn = new
     SqlConnection(@"Data Source=WELLINGT-45545B\SQLEXPRESS;
    Initial Catalog=Clientes;Integrated Security=True;Pooling=False"
    );
    sábado, 5 de junho de 2010 00:25