Codificando .Net

Aprendizado, companherismo, ensino e aperfeiçoamento constante

Galera to fazendo um Cadastro de Clientes bem simples, usando o acess como banco
na hra q eu preencho os dados e aperto incluir que no caso deveria incluir no banco aparece a msg assim

OleDbException was unhandled by user code
Nenhum valor foi fornecido para um ou mais parâmetros necessários.
troubleshootingtips

Alguem pode me dar alguma dica??
o codigo ta a seguir
protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection conexao;
OleDbCommand comando;

string value1 = TextBox1.Text;
string value2 = TextBox2.Text;
string value3 = TextBox3.Text;

conexao = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Clientes.accdb;Persist Security Info=True");
conexao.Open();
comando = new OleDbCommand("INSERT INTO Clientes_Tab01 VALUES(" + value1 + "," + value2 + "," + value3 + ")", conexao);

comando.ExecuteNonQuery();
conexao.Close();
}

Exibições: 137

Comentário de BrunoSalgueiro em 6 março 2009 às 11:41
Ja descobri o erro
Nesta linha faltavam aspas simples entre as variaveis

comando = new OleDbCommand("INSERT INTO Clientes_Tab01 VALUES('" + value1 + "','" + value2 + "','" + value3 + "')",
Comentário de Fernanda Sallai em 6 março 2009 às 13:14
Parabéns...
Comentário de Igor Quirino em 6 março 2009 às 22:52
Isso que iria comentar
Abração!
Comentário de Robson Castilho em 7 março 2009 às 21:58
Considere 2 pontos:
1) Especifique as colunas a ter dados inseridos:
INSERT INTO Clientes_Tab01(Campo1,Campo2) VALUES(.........
Isso deixa seu comando mais legivel e, ainda, garante que sua consulta nao quebre, caso voce inclua um novo campo.

2) URGENTE! Utilize parametros ao inves de concatenar os valores no comando. Do jeito que faz, seus comandos podem estar sujeitos a SQL injection.
Comentário de Felipe Barbosa Silveira em 9 março 2009 às 10:50
Sim sim, com parametro fica muito mais seguro e até mais bunitenho: :B

protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection conexao;
OleDbCommand comando;

string value1 = TextBox1.Text;
string value2 = TextBox2.Text;
string value3 = TextBox3.Text;

conexao = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Clientes.accdb;Persist Security Info=True");
conexao.Open();
comando = new OleDbCommand("INSERT INTO Clientes_Tab01(CAMPO1,CAMPO2,CAMPO3) VALUES( @VALOR1,@VALOR2,@VALOR3)", conexao);

comando.Parameters.Add("@VALOR1", OleDBType.VarChar, 255);
comando.Parameters.Add("@VALOR2", OleDBType.VarChar, 255);
comando.Parameters.Add("@VALOR3", OleDBType.VarChar, 255);

comando.Parameters["@VALOR1"].Value = value1;
comando.Parameters["@VALOR2"].Value = value2;
comando.Parameters["@VALOR3"].Value = value3;

comando.ExecuteNonQuery();
conexao.Close();
}

Ficaria +/- assim.
Valeu

Comentar

Você precisa ser um membro de Codificando .Net para adicionar comentários!

Entrar em Codificando .Net

Patrocínios

 

 

Comunidade Daruma 

Editora O'Reilly 

 

© 2013   Criado por Alexandre Tarifa.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço