Usuário com melhor resposta
UPDATE (SQL) não funciona!

Pergunta
-
Olá pessoal!
Estou começando com VB.NET e estou com um pequeno problema.
Estou desenvolvendo uma aplicação mais elaborada, utilizando DAO.NET através de código, pois prefiro trabalhar com código.
Tudo corria bem, quando fui testar o comando UPDATE (SQL) de um OleDbCommand, e este simplesmente não faz nada. Então pra simplificar eu fiz um pequeno exemplo com ADO, para testar, e realmente não funciona. Ele não retorna erro nem nada. Simplesmente não altera a base de dados.
No meu exemplo uso uma base de dados MDB e no form tem 3 textbox que correspondem aos campos da tabela Cliente.
Segue o código do botão que deveria fazer o trabalho. Se puderem apontar o problema, ficarei grato.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click con = New OleDbConnection(conStr) con.Open() comm = New OleDbCommand() comm.Connection = con comm.CommandType = CommandType.Text comm.CommandText = "UPDATE Cliente SET Telefone=@telefone WHERE ClienteID=@clienteID" comm.Parameters.AddWithValue("@clienteID", TextBox1.Text) comm.Parameters.AddWithValue("@nome", TextBox2.Text) comm.Parameters.AddWithValue("@telefone", TextBox3.Text) comm.ExecuteNonQuery() End Sub
Obrigado desde já!
Respostas
-
Mr. Cronos,
quando você utiliza o OleDb provider para acesso a banco de dados, a ordem que você atribui os parâmetros faz diferença (nesse caso, o nome do parâmetro não serve para muita coisa). Portanto, sugiro que retire o parâmetro "@nome" (já que ele não se encontra na query) e que inverta a ordem dos parâmetros @telefone e @clienteID para que reflitam a mesma ordem em que aparecem na query.
Ricardo Oneda- Marcado como Resposta Mr. Cronos sexta-feira, 19 de novembro de 2010 19:53
Todas as Respostas
-
Mr. Cronos,
quando você utiliza o OleDb provider para acesso a banco de dados, a ordem que você atribui os parâmetros faz diferença (nesse caso, o nome do parâmetro não serve para muita coisa). Portanto, sugiro que retire o parâmetro "@nome" (já que ele não se encontra na query) e que inverta a ordem dos parâmetros @telefone e @clienteID para que reflitam a mesma ordem em que aparecem na query.
Ricardo Oneda- Marcado como Resposta Mr. Cronos sexta-feira, 19 de novembro de 2010 19:53
-
-
Mr. Cronos,
além do OleDb, o nome também não influencia no ODBC provider. Já no SqlClient provider, o nome é utilizado. Mais informações em:
Ricardo Oneda- Sugerido como Resposta Ricardo Oneda domingo, 28 de novembro de 2010 17:57