none
Como gravar dados de um form ? RRS feed

  • Pergunta

  • Olá pessoal, estou iniciando em C# e SQL, estou desenvolvendo um aplicativo, e criei um banco de dados no SQL Management Studio 2008, lá eu criei as tabelas que irei usar para o banco de dados dos Forms que criei no Visual Studio 2010 em C#, estou querendo fazer um botão salvar, que salva os dados dos textbox, chequebox, combobox, e datetimepicker, mas ai está o problema, já proceurei coloquei alguns códigos, mas não estou conseguindo fazer conexão com o banco de dados, qual a melhor opção...? no próprio VS2010 tem um banco de dados, na qual não consegui utilizar também, como fazer essa conexão..?  precisa fazer alguma stored procedure, por que já fiz uma insert, mas como utilizar...? se alguém puder me ajudar agradeço, se quiser dar uma olhada no código que coloquei, só falar...agradeço a todos que puderem ajudar...!
    • Movido Gustavo Maia Aguiar terça-feira, 18 de janeiro de 2011 16:50 (De:SQL Server - Desenvolvimento Geral)
    terça-feira, 18 de janeiro de 2011 13:05

Respostas

  • Então titan segue um exemplo do que vc deseja porém te aconselho a trabalhar com Orientação a Objetos. Qualquer dúvida posta ai!

    //Abro a conexão e coloco entre aspas
          //o caminho do banco
          SqlConnection conn = new SqlConnection(@"Data Source=ZEGOIABA-PC\SQLEXPRESS;Initial Catalog=ExemploEF4;Integrated Security=True;Pooling=False");
          //Monto a string de comando
          StringBuilder sql = new StringBuilder();
          sql.Append("INSERT INTO Cliente (Nome, Email) ");
          sql.Append("Values (@Nome, @Email)");
          //instancio o comando e monto o mesmo
          SqlCommand comando = new SqlCommand(sql.ToString(), conn);
          //preencho os parâmetros com os valores dos textbox
          comando.Parameters.AddWithValue("@Nome", txtNome.Text);
          comando.Parameters.AddWithValue("@Email", txtEmail.Text);
          //Abro a conexão
          conn.Open();
          //executo o comando      
          comando.ExecuteNonQuery();
          //fecho a conexão
          conn.Close();
    
    Espero ter ajudado qualquer dúvida posta ai!
    Beleza de Creuza!
    • Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 21 de janeiro de 2011 16:19
    • Marcado como Resposta Titan_mdp quinta-feira, 27 de janeiro de 2011 11:26
    sexta-feira, 21 de janeiro de 2011 15:17

Todas as Respostas

  • Galera coloquei esse seguinte comando:

     private void button5_Click(object sender, EventArgs e)

            {

                InsertRow(" Provider = Microsoft Sql Server;Data Source=C:/Arquivo de Programas/Microsoft SQL Server/MSSQL10.TITAN/MSSQL/DATA/KPMG-T2.mdf",

                    "insert into TableCliente(NomeCliente, Diretor, Escritorio, Socio, Gerente, Premium, DataContato, Horas, Justificativa, SemIrm) values('" + textBox4.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + checkBox1.Text + "','" + dateTimePicker1.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + checkBox2.Text + "')");

     

            }

     

            public void InsertRow(string connectionString, string insertSQL)

            {

                using (OleDbConnection connection = new OleDbConnection(connectionString))

                {

                    // The insertSQL string contains a SQL statement that

                    // inserts a new row in the source table.

                    OleDbCommand command = new OleDbCommand(insertSQL);

     

                    // Set the Connection to the new OleDbConnection.

                    command.Connection = connection;

     

                    // Open the connection and execute the insert command.

                    try

                    {

                        connection.Open();

                        command.ExecuteNonQuery();

                    }

                    catch

                    {

                        MessageBox.Show("Erro ao salvar na base de dados");// Console.WriteLine(ex.Message);

                    }

                    // The connection is automatically closed when the

                    // code exits the using block.

                }

            }

     

    Mas da erro ao salvar base de dados, o que quer dizer que não esta salvando no banco de dados, se alguém souber me dizer o por que agradeço...!

    terça-feira, 18 de janeiro de 2011 15:35
  • Prezado,

    Qual é exatamente a mensagem de erro que você está recebendo?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    terça-feira, 18 de janeiro de 2011 21:33
    Moderador
  • O Problema que estou é na seguinte linha:

    int result = command.ExecutNoQuerry();

    Failed to convert parameter value from a String to a Int32.

    Falha ao converter valor de parâmetro a partir de uma String paraum Int32.


     SqlConnection CNN = new SqlConnection("Data Source=TITAN-01;Initial Catalog=KPMG-T2;Integrated Security=True");

                SqlCommand command = new SqlCommand("Data Source = TITAN-01; Initial Catalog = KPMG_T2; Integrated Security = SSPI;", CNN);

                command.Parameters.Add("@ID", SqlDbType.Int).SqlValue = this.textBox1.Text;

                command.Parameters.Add("@NomeCliente", SqlDbType.VarChar, 100).Value = this.textBox4.Text;

                command.Parameters.Add("@Diretor", SqlDbType.VarChar, 50).Value = this.textBox2.Text;

                command.Parameters.Add("@Escritorio", SqlDbType.VarChar, 50).Value = this.textBox3.Text;

                command.Parameters.Add("@Socio", SqlDbType.VarChar, 50).Value = this.textBox5.Text;

                command.Parameters.Add("@Gerente", SqlDbType.VarChar, 50).Value = this.textBox6.Text;

                command.Parameters.Add("@Premium", SqlDbType.TinyInt).Value = this.checkBox1.Text;

                command.Parameters.Add("@DataContato", SqlDbType.Date).Value = this.dateTimePicker1.Text;

                command.Parameters.Add("@Horas", SqlDbType.Time).Value = this.textBox7.Text;

                command.Parameters.Add("@Justificativa", SqlDbType.Text).Value = this.textBox8.Text;

                command.Parameters.Add("@SemIrm", SqlDbType.TinyInt).Value = this.checkBox2.Text;

                CNN.Open();

                int result = command.ExecuteNonQuery();

                SqlParameter pr = command.Parameters.Add("@pam", SqlDbType.VarChar, 10);

                pr.Direction = ParameterDirection.Output;

                string outResult = pr.Value.ToString();

                MessageBox.Show(outResult.ToString());

                CNN.Close();

                MessageBox.Show(result.ToString());

     

    Como converter esses dados para int32 de uma forma que de certo...?

    quarta-feira, 19 de janeiro de 2011 16:15
  • o seu sqlcommand deve ser o script sql e nao a string de conexao.

     

     SqlCommand command = new SqlCommand("aqui vai o seu codigo sql para realizar o insert, update etc.. ou uma chamada de procedure", CNN);

     


    ----------------------------
    Bruno Seixas
    Analista de Sistemas
    quarta-feira, 19 de janeiro de 2011 18:22
  • SqlConnection CNN = new SqlConnection("Data Source=TITAN-01;Initial Catalog=KPMG-T2;Integrated Security=True");
                SqlCommand command = new SqlCommand("SalvarDadosCliente", CNN);
        command.CommandText = "Insert Into TableCliente(NomeCliente, Diretor, Escritorio, Socio, Gerente, Premium, DataContato, Horas, Justificativa, SemIrm)  Values (@NomeCliente, @Diretor, @Escritorio, @Socio, @Gerente, @Premium, @DataContato, @Horas, @Justificativa, @SemIrm)";
                command.Parameters.Add("@ID", SqlDbType.Int).SqlValue = this.textBox1.Text;
                command.Parameters.Add("@NomeCliente", SqlDbType.VarChar, 100).Value = this.textBox4.Text;
                command.Parameters.Add("@Diretor", SqlDbType.VarChar, 50).Value = this.textBox2.Text;
                command.Parameters.Add("@Escritorio", SqlDbType.VarChar, 50).Value = this.textBox3.Text;
                command.Parameters.Add("@Socio", SqlDbType.VarChar, 50).Value = this.textBox5.Text;
                command.Parameters.Add("@Gerente", SqlDbType.VarChar, 50).Value = this.textBox6.Text;
                command.Parameters.Add("@Premium", SqlDbType.TinyInt).Value = this.checkBox1.Text;
                command.Parameters.Add("@DataContato", SqlDbType.Date).Value = this.dateTimePicker1.Text;
                command.Parameters.Add("@Horas", SqlDbType.Time).Value = this.textBox7.Text;
                command.Parameters.Add("@Justificativa", SqlDbType.Text).Value = this.textBox8.Text;
                command.Parameters.Add("@SemIrm", SqlDbType.TinyInt).Value = this.checkBox2.Text;
                CNN.Open();
                int result = Int32.Parse("result");       
                command.ExecuteNonQuery();
                SqlParameter pr = command.Parameters.Add("@pam", SqlDbType.VarChar, 10);
                pr.Direction = ParameterDirection.Output;
                string outResult = pr.Value.ToString();
                MessageBox.Show(outResult.ToString());
                CNN.Close();
                MessageBox.Show(result.ToString());

    Então onde está grifado em preto  "SalvarDadosCliente" é o meu procedure insert, que criei, ele está apresentando erro aqui na linha:  int result = Int32.Parse("result");  fala que a forma de converter não está certo, preciso saber como fazer essa parte do código, se souber de algo me ajude por favor....!
    quinta-feira, 20 de janeiro de 2011 12:34
  • substitua salvardadoscliente por exec salvardadoscliente.. certifique-se de que os parametros no seu codigo batem com os da procedure, as vezes vc esta mandando um valor string para um parametro inteiro na procedure
    ----------------------------
    Bruno Seixas
    Analista de Sistemas
    quinta-feira, 20 de janeiro de 2011 13:16
  • Titan, vamos lá...

    O quê você está esperando que seja retornado nesse seu result? Qual é a lógica da sua procedure com esse retorno? Ele informa se o insert foi bem sucedido ou não? Porque, se você não tiver nenhuma lógica especial, você não precisa criar procedure para fazer o INSERT... Você pode fazer o INSERT direto no CommandText, sem precisar de procedure...

    Explique mais detalhadamente o que  você está querendo fazer pra gente poder te mandar um exemplo mais direcionado pra sua necessidade...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    quinta-feira, 20 de janeiro de 2011 15:48
    Moderador
  • Então eu estava colocando vários textbox entre outros controles, e gostaria de salvar os dados que neles fossem colocados e guardar como se fosse um registro, um cara me passou esses parâmetros eu eu só adaptei a minha necessidade mas não funcionou, ai conseguir achar um tutorial que mostra como fazer criando um dataset e só arrastar para o form a tabela que você criou que ele já te da a opção de deletar salvar e criar os registros que estão sendo preenchidos nos campos de ferramentas utilizadas, mas queria saber como faz isso na mão tipo você coloca as ferramentas e depois coloca isso tudo em um banco de dados mas eu conseguir fazer o código a cima que você viu, o result na verdade foi um cara que me passou esse comando e eu nem sei para que ele serve, sendo que ele não me retorna nada....!  fora isso é o que tento fazer, consegui mas da forma com o dataset, e você colocando as ferramentas a mão e como ficaria um botão salvar desse form para que salvasse todos os dados da form em um banco de dados...essa é a minha questão...?
    sexta-feira, 21 de janeiro de 2011 14:17
  • Então titan segue um exemplo do que vc deseja porém te aconselho a trabalhar com Orientação a Objetos. Qualquer dúvida posta ai!

    //Abro a conexão e coloco entre aspas
          //o caminho do banco
          SqlConnection conn = new SqlConnection(@"Data Source=ZEGOIABA-PC\SQLEXPRESS;Initial Catalog=ExemploEF4;Integrated Security=True;Pooling=False");
          //Monto a string de comando
          StringBuilder sql = new StringBuilder();
          sql.Append("INSERT INTO Cliente (Nome, Email) ");
          sql.Append("Values (@Nome, @Email)");
          //instancio o comando e monto o mesmo
          SqlCommand comando = new SqlCommand(sql.ToString(), conn);
          //preencho os parâmetros com os valores dos textbox
          comando.Parameters.AddWithValue("@Nome", txtNome.Text);
          comando.Parameters.AddWithValue("@Email", txtEmail.Text);
          //Abro a conexão
          conn.Open();
          //executo o comando      
          comando.ExecuteNonQuery();
          //fecho a conexão
          conn.Close();
    
    Espero ter ajudado qualquer dúvida posta ai!
    Beleza de Creuza!
    • Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 21 de janeiro de 2011 16:19
    • Marcado como Resposta Titan_mdp quinta-feira, 27 de janeiro de 2011 11:26
    sexta-feira, 21 de janeiro de 2011 15:17
  • Irei fazer o Teste, espero que isso me ajude, mas muito obrigado, pelo que eu via na lógica parece funcionar, vou realizar o teste e digo se deu certo logo em seguida...valeu....!
    sexta-feira, 21 de janeiro de 2011 18:30