Usuário com melhor resposta
Como gravar dados de um form ?

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)
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!
Espero ter ajudado 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();
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
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...!
-
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 -
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...?
-
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 -
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....! -
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 -
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 -
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...?
-
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!
Espero ter ajudado 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();
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
-