Foros del Web » Programación para mayores de 30 ;) » .NET »

OleDb: Palabras reservadas SQL

Estas en el tema de OleDb: Palabras reservadas SQL en el foro de .NET en Foros del Web. Hola, tengo una duda acerca de una consulta en OleDb. Mi problema es que necesito guardar campos en una base de datos cuyo nombre son ...
  #1 (permalink)  
Antiguo 07/08/2010, 12:54
Avatar de MouRG  
Fecha de Ingreso: agosto-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
OleDb: Palabras reservadas SQL

Hola, tengo una duda acerca de una consulta en OleDb. Mi problema es que necesito guardar campos en una base de datos cuyo nombre son palabras reservadas SQL (concretamente 'number' y 'position'). Al ejecutar la actualización salta el error: "Error de sintaxis en la instrucción UPDATE".

Me paso con anterioridad en Java utilizando JDBC y el error se resolvía poniendo el campo entre \" y \" (update players set \"number\"=...), pero en C# con OleDb no sirve, a ver si sabe como se resuelve aquí ;)

Dejo el código que tengo ahora mismo y SÍ funciona (sin los campos number y position) por si sirve de ayuda:

Código:
        public void guardarJugador(Jugador j)
        {
            try
            {
                OleDbDataAdapter da = new OleDbDataAdapter("update players set yearsexp="+j.experiencia+", team=" + j.equipo + ", fgpbase=" + j.tc + ", threeptbas=" + j.t3 + ", ftpbase=" + j.tl + ", DNKABILITY=" + j.mate + ", DHARDY=" + j.vigor + ", BLKABILITY=" + j.tapon + ", OREABILITY=" + j.rof +
                    ", DREABILITY=" + j.rdef + ", BALABILITY=" + j.pase + ", OFFABILITY=" + j.ataque + ", DEFABILITY=" + j.defensa + ", SPEED=" + j.velocidad + ", QUICK=" + j.agilidad + ", JUMP=" + j.salto + ", DRIBBLE=" + j.dribbling + ", DSTRENGTH=" + j.fuerza +
                    ", STLABILITY=" + j.robo + ", FATIGUE=" + j.resistencia + ", INSIDESC=" + j.tz + ", hand=" + j.mano + ", name='" + j.apellido + "', fname='" + j.nombre + "' where PLAYERID=" + j.pid, con);
                dt = new DataTable();
                da.Fill(dt);
                MessageBox.Show("Jugador guardado correctamente");
            }
            catch (Exception e)
            {
                MessageBox.Show("Error al abrir la base de datos\n" + e.Message);
            }
        }
Gracias de antemano
  #2 (permalink)  
Antiguo 10/09/2010, 14:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: OleDb: Palabras reservadas SQL

ya intentaste usando el dato entre [ ], en ado si usas campos con espacios o numeros debes poner por ejemplo [1erNombre] = 'Javier'.

espero te sirva.
  #3 (permalink)  
Antiguo 11/09/2010, 07:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: OleDb: Palabras reservadas SQL

En principio, hay una posible palabra reservada: QUICK, que en algunso DBMS se usa en funciones internas, por lo que muy probablemente cuse problemas.
Pero más allá de eso, lo primero que debes averiguar es si los valores están entrando correctamente en tu sentencia, ya que el error más común es precisamente que una variable llegue sin contenido y como resultado se de un segmento así:
Código SQL:
Ver original
  1. campo = , campo2 = 0, campo3 = 12.4
donde el valor de campo no existe y eso genera un error de sintaxis.

Debugguea el código y detén el proceso en ese punto para ver qué contiene cada variable...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: oledb, palabras, reservadas, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:33.