Visual Basic.NET - Problema con sentencia UPDATE

   
Vista:

Problema con sentencia UPDATE

Publicado por Malpi (4 intervenciones) el 19/03/2011 17:47:51
Hola, soy un viejo programador de Visual Basic 6 que despues de muchos años he retornado usando Visual Basic 2010.
Despues de usar sentencias SQL de tipo Select o Delete no he tenido ningun problema pero al usar el UPDATE me da error a la hora de ejecutar.
Aqui pongo la parte del codigo donde está el error:

Dim oconn As New OleDbConnection

Dim ocomn As New OleDbCommand

Dim odata As OleDbDataReader

oconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory + "\usuarios.accdb"

oconn.Open()

ocomn.CommandText = "UPDATE Users SET User='" & TextBox1.Text & "',Pass='" & TextBox2.Text & "' WHERE User='" & login & "'"
ocomn.Connection = oconn

odata = ocomn.ExecuteReader()

Es una simple tabla con usuario y contraseña y lo que quiero es modificar los datos que escriba en el text1 y el text2. La variable login es de tipo string y guarda el usuario original que deseo modificar.

Agradecería cualquier tipo de ayuda. Muchas gracias y un saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

Problema con sentencia UPDATE

Publicado por roger rogergomez780@hotmail.com (186 intervenciones) el 19/03/2011 22:26:51
y cual es el error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

Problema con sentencia UPDATE

Publicado por roger rogergomez780@hotmail.com (186 intervenciones) el 20/03/2011 16:36:06
tomando en cuenta que es una actualizacion, lo mas correcto es utilizar ExecuteNonQuery(), el ExecuteReader() es para retornar resultados de una consulta. Nunca he hecho actualizaciones con ExecuteReader() entonces no podria asegurar que ese sea el problema, pero es una opcion.
Tambien esta lo que dice xve, de realizar un print del update, o puedes depurar y mirar con que valor queda ocomn.CommandText antes de ejecutar la sentencia, te copias ese valor y lo ejecutas directamente en el motor, para que te muestre el error.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por Malpi (4 intervenciones) el 19/03/2011 23:33:48
Error de sintaxis en la instruccion UPDATE.

Odata = ocomn.ExecuteReader()

Esto es lo que me marca y la verdad q no entiendo donde puede estar el fallo. He probado tambien con un oledbcommand y executenonquery pero me marca exactamente lo mismo. La instruccion UPDATE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema con sentencia UPDATE

Publicado por xve (88 intervenciones) el 20/03/2011 09:32:01
Realiza un print del update:
"UPDATE Users SET User='" & TextBox1.Text & "',Pass='" & TextBox2.Text & "' WHERE User='" & login & "'"

Puede ser que la variable login este vacia?

Al ser error de sintaxis, es que hay algo mal escrito en la consulta sql, y que un campo necesario esta vacio...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por Malpi (4 intervenciones) el 20/03/2011 10:51:47
Es todo un misterio... La variable login no esta vacía porque justo de eso quise asegurarme mostrando un mensaje durante el proceso:

MsgBox("Va actualizandose de " & login & " a " & TextBox1.Text & "")

Eso estaba todo bien ya que login recoge el nombre original antes de ser modificado en el texto.

No queda otra que seguir investigando y volviendose loco xD

Gracias de todos modos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por Malpi (4 intervenciones) el 21/03/2011 19:15:10
Problema solucionado! Mis campos en la tabla se llamaban User y Pass. Al parecer crea algun tipo de conflicto porque los he cambiao por Usuario y Contra y funciona a la perfeccion..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por Manuel (17 intervenciones) el 31/01/2012 21:17:24
vaya, a mi me acaba de suceder lo mismo y la respuesta me ayudo bastante, increible que access sea tan chafa, bueno ya sabia que lo era, pero no sabia que lo era tanto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por Manuel (1 intervención) el 26/10/2013 01:05:58
Problema solucionado! Mis campos en la tabla se llamaban User y Pass. Al parecer crea algun tipo de conflicto porque los he cambiao por Usuario y Contra y funciona a la perfeccion..
---------------
increible que access sea tan chafa
---------------
de que es chafa, es chafa, es una reverenda basura..., a mi me pasó lo mismo y estuve un buen rato igual hasta que vi el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por elkin elkinj22@hotmail.com (1 intervención) el 07/04/2014 01:22:04
gracias, tienes razon, tenia user y pass y ese era el error, tenia 2 horas con ese problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sentencia UPDATE

Publicado por heiner (1 intervención) el 25/05/2015 18:09:17
tambien tenia el mismo problema pero tu sentencia le falta el where donde estas identificando que usuario en si vas a actualizar cada usuario tiene que tener un id que lo identifique

ejemplo :

Dim consulta2 As String = "update usuario " & _
"set NOMBRE='" & txtnombre.Text & "', APELLIDO= '" & txtapellido.Text & "', IDENTIFICACION ='" & txtid.Text & "', EDAD= '" & txtedad.Text & "'" & _
"where ID= '" & txtcodigo.Text & "'"

espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Problema con sentencia UPDATE

Haber Jóvenes,

Yo he trabajado por muchos años con MSAccess, como base de datos, desde vb4 a 6.0 y también en .NET y nunca he tenido problemas, y en aplicaciones no solo pequeñas, pero si no se documentan bien o no conocen la sintaxis del lenguaje, terminan por echarle la culpa a su base de datos en este caso MSAccess.

Además aprovecho para pues ayudarles en mejorar un poquito en cuanto a evitar toda esa serie de comillas, que veo acostumbran a concatenar sus textboxes, y podrían ser vulnerables a inyección de código.

Que tal si aplican así?.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public bool Update(Cliente cliente)
{
	OleDbConnection Conn = new OleDbConnection(Conexion.Connectionstring);
	OleDbCommand cmd = new OleDbCommand();
	bool Result = false;
	try
	{
		Conn.Open();
		cmd.CommandText = "UPDATE CLIENTES SET NOMBRECLIENTE=@Nombre Where IdCliente=@IdCliente";
		cmd.CommandType = CommandType.Text;
		cmd.Connection = Conn;
		cmd.Parameters.Add("@Nombre", OleDbType.VarChar).Value = cliente.NombreCliente;
		cmd.Parameters.Add("@IdCliente",OleDbType.Integer).Value = cliente.IdCliente;
		int ok = cmd.ExecuteNonQuery();
		if (ok > 0)
		{
			Result = true;
		}
		return Result;
	}
	catch (Exception ex)
	{
		throw new Exception(ex.Message);
	}
	finally
	{
		if (Conn.State == ConnectionState.Open)
			Conn.Close();
		Conn.Dispose();
	}
}

Bueno ese código está hecho con C#, pero es lo mismo en VB, asi que espero les sirva.

Saludos cordiales

PD:Para el amigo que está mandando a ejecutar un DATAREADER, decirle que para consultas de acción, debe emplear ExecuteNonQuery y no ExecuteReader.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar