none
SqlConection e Sqlcomand RRS feed

  • Pergunta

  • Olá pessoal, eu dei uma procurada na web e não consegui encontrar nada que resolvesse meu problema,

     

    quero passar para um banco (nome do banco cadastroClientes, nome da tabela clientes) de dados informações de um formulario, então após ter feito o formulario, criei uma nova classe com nome de conexão com os sequintes metodos :

     

    public SqlConnection abrir()
            {
                try
                {
                    string conexao = @"Data Source=.\sqlexpress;Initial Catalog=cadastroClientes;Integrated Security=True";
                    SqlConnection abreconexao = new SqlConnection(conexao);
                    abreconexao.Open();
                    return abreconexao; ;
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }//retorna a conexao aberta

                public SqlCommand inserir()
                {
                    string sql = "INSERT INTO cadastros(razao_social, nome_fantasia, cnpj, inscricao_estadual, esdereco_sede, endereco_cobranca, endereco_entrega, email, email_alternativo, telefone, fax, observacoes)"+
                   " VALUES (@razao_social, @nome_fantasia, @cnpj, @inscricao_estadual, @esdereco_sede, @endereco_cobranca, @endereco_entrega, @email, @email_alternativo, @telefone, @fax, @observacoes)";
                    try
                    {
                        SqlCommand comando = new SqlCommand(sql, abrir());
                        return comando;

                    }
                    catch (Exception ex)
                    {
                       
                        throw ex;
                    }
                   
                }//recebe os txtbox e inseri os valores no banco

     

    eu sei que na parte do sqlcomand tenho que colocar os parametros dos txtbox mas como faço isso ?
    e ainda tenho que fazer um adaptador para preencher os valores do banco.

     

    obrigado pela ajuda.

    terça-feira, 20 de setembro de 2011 19:36

Todas as Respostas

  • Completinho..

    http://www.macoratti.net/11/04/c_sql_1.htm

    http://www.macoratti.net/08/11/c_sql_m1.htm


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    terça-feira, 20 de setembro de 2011 19:39
  • Existe diversas maneiras de passar parametro para o seu SqlCommand, veja um exemplo abaixo:

    using (SqlConnection cn = new SqlConnection("Sua string de conexao"))
    {
        SqlCommand cmd = cn.CreateCommand();
    
        //Query
        string query = "INSERT INTO tbAlguma (Nome,DataNascimento) VALUES (@Nome,@DataNascimento)"; 
    
        //Parametros
        cmd.Parameters.AddRange(new SqlParameter[] 
        { 
            new SqlParameter() {ParameterName = "@Nome", SqlDbType = System.Data.SqlDbType.VarChar, Value = "Bruno"},
            new SqlParameter() {ParameterName = "@DataNascimento", SqlDbType = System.Data.SqlDbType.SmallDateTime, Value = "18/09/2011"}
        
        });
    
        //Ou
        cmd.Parameters.Add("@Nome", System.Data.SqlDbType.SmallDateTime).Value = "Bruno";
        cmd.Parameters.Add("@DataNascimento", System.Data.SqlDbType.SmallDateTime).Value = "18/09/2011";
    
        //Ou
        cmd.Parameters.AddWithValue("@Nome", "Bruno");
        cmd.Parameters.AddWithValue("@DataNascimento", "18/09/2011");
    
        cn.Open();
    
        cmd.ExecuteNonQuery();
    }
    

    No caso os valores Bruno e 18/09/2011 é como se fosse os valores do seu TextBox


    Referencia:
    http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.aspx 
    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/
    terça-feira, 20 de setembro de 2011 19:55
  • Se você está iniciando agora recomendo a forma "tradicional". Depois vai "incrementando" mais opções.

            static void InsertProduto()
            {
                SqlConnection con = new SqlConnection(@"Data Source=PCFVIANA-NOTE\LOCAL;Initial Catalog=MSDN;Integrated Security=True");
                SqlCommand cmd = new SqlCommand("INSERT INTO PRODUTO (Nome,DataCadastro,CategoriaId) values (@Nome,@DataCadastro,@CategoriaId)", con);
                cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = "Mouse Microsoft";
                cmd.Parameters.Add("@DataCadastro", SqlDbType.DateTime).Value = DateTime.Now;
                cmd.Parameters.Add("@CategoriaId", SqlDbType.Int).Value = 3;     
    
                try
                {
                    con.Open();               
    
                    cmd.ExecuteNonQuery();
    
                    con.Close();
                }
                catch (Exception)
                {
                    throw;
                }
     
            }
    
            static void ListarProdutos()
            {
                string nome = "nome";
                string datacadastro = "datacadastro";
                string categoriaId = "categoriaId";
    
                SqlConnection con = new SqlConnection(@"Data Source=PCFVIANA-NOTE\LOCAL;Initial Catalog=MSDN;Integrated Security=True");
                SqlCommand cmd = new SqlCommand("select Nome,DataCadastro,CategoriaId from Produto", con);
                SqlDataReader reader;
            
                try
                {
                    con.Open();
    
                    reader = cmd.ExecuteReader();
    
                    while (reader.Read())
                    {
                        Console.WriteLine("Produto: {0} - Data Cadastro: {1} - CategoriaId: {2}",
                            reader[nome].ToString(),
                            reader[datacadastro].ToString(),
                            reader[categoriaId].ToString());
                    }
    
                    con.Close();
                }
                catch (Exception)
                {
                    throw;
                }
            }
    



    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    terça-feira, 20 de setembro de 2011 20:01
  • opa galera valeu pela ajuda!

     

    só mais uma pergunta,

    então eu vou sempre precisar de algo como:

    SqlCommand cmd = new SqlCommand("INSERT INTO PRODUTO (Nome,DataCadastro,CategoriaId) values (@Nome,@DataCadastro,@CategoriaId)"
    , con);

    eu achava que os parametros substituiam essa parte do código.

     

    valeu galera!

    quinta-feira, 22 de setembro de 2011 15:02
  • Você precisa compreender o que é pedido quando se utiliza os objetos. Veja que você não precisa informar o command e nem o objeto SqlConnect agora... mas pode.

     

    Isso poderia ser feito depois. Como??

    Assim:

            SqlConnection con = new SqlConnection();
            con.ConnectionString = "Sua_string_de_conexao";
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "sua_aquery";
            //etc
    

    Por isso que existe N maneiras de se fazer a mesma coisa. Tem que entender....

    Aqueles link's que postei são bons. Explica muito bem (Macoratti).


    --
    Marque as respostas e ajude a melhorar a busca do fórum.

    quinta-feira, 22 de setembro de 2011 15:18
  • opa valeu pela ajuda

    agora o problema é o seguinte;

    criei um método para retornar os valores do banco para um datagrindview

    segue o metodo:

     

    public SqlDataReader retornaTabela()
            {
                try
                {
                    string conexao = @"Data Source=.\sqlexpress;Initial Catalog=cadastroClientes;Integrated Security=True";
                    SqlConnection abreconecao = new SqlConnection(conexao);
                    SqlCommand driver = new SqlCommand("select * from cadastros ORDER BY razao_social", abreconecao);
                    SqlDataReader retornabusca;
                    retornabusca = driver.ExecuteReader();
                    return retornabusca;
                 }
                catch (Exception)
                {
                   
                    throw;
                }
            }

     

    estou tentando passar agora para o grind view

     

     conexao objconexao = new conexao();
                dataGridView1.DataSource = objconexao.retornaTabela();

    eu sei que tem haver com databind no grind, mas nun to conseguindo fazer

    nota; o nome da classe aonde estao os metodos da conexao é "conexao".

     

    valeu mais uma vez pessoal.

     

    quinta-feira, 22 de setembro de 2011 19:00
  •             SqlConnection conexao = new SqlConnection("string de conexao");
                SqlCommand cmd = new SqlCommand("query", conexao);
                SqlDataReader reader = null;
                DataTable tabela = new DataTable();
    
                try
                {
                    conexao.Open();
                    reader = cmd.ExecuteReader();
                    tabela.Load(reader);
                    conexao.Close();
    
                    GridView1.DataSource = tabela;
                    GridView1.DataBind();
                }
                catch (Exception)
                {
                    
                    throw;
                }
    


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quinta-feira, 22 de setembro de 2011 19:18
  • mas pelo oqeu eu li, o DataBind() é usado na web certo?

    minha aplicação é comp windowsforms, e ele não esta reconhecendo o comando dataBind();

    tem outro jeito de fazer ?

    quinta-feira, 22 de setembro de 2011 19:33
  • ok, ok..

    Tente: dataGridView1.DataSource = tabela.DefaultView; ou tabela;


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quinta-feira, 22 de setembro de 2011 19:36
  • opa valeu cara, funcionou certinho

    muito obrigado

     

    alias, como vc deve ter notado estou começando agora com c#, estou lendo aqueles links que vc me mandou

    poderia me indicar algum livro ?

     

    valeu!

    quinta-feira, 22 de setembro de 2011 19:45
  • Alex,

    marque as respostas que te ajudam por favor.

    Com relação a livros, eu recomendo "Como programar em asp.net e c#", do Alfredo Lotar. Boa linguagem e fácil entendimento.

    No mais aqui no MSDN tem ótimos videos.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quinta-feira, 22 de setembro de 2011 19:50