Para ejecutar consultas SQL de Select me funciona perfectamente. Pero cuando intento ejecutar una consulta de Insert (para insertar un registro) usando en Visual C# .Net:
OdbcCommand.ExecuteNonQuery
Con la consulta SQL siguiente:
insert into factura (codigocliente, observacion) values (2,'Prueba');
Me aparece el siguiente error y no me inserta el registro:
---------------------------
Error Facturación y Contabilidad
---------------------------
ERROR [22P02] ERROR: el valor de array debe comenzar con «{» o información de dimensión;
Error while executing the query
---------------------------
Aceptar
---------------------------
El código Visual C# que uso para insertar un registro en una BD PostgreSQL mediante ODBC es:
Código:
OdbcCommand comandoSQL;
string consultaSQL;
try
{
consultaSQL = "insert into factura (codigocliente, observacion) values (2,'Prueba');
comandoSQL = new OdbcCommand(consultaSQL, conexionBDODBC);
comandoSQL.ExecuteNonQuery();
MessageBox.Show("Registro insertado en PostgreSQL correctamente con ODBC y C Sharp");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
¿Qué estoy haciendo mal?
Publicado:
Sab Jul 07, 2012 10:03 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: PostgreSQL C# ERROR 22P02: el valor de array debe comenz
Anuncios
varios escribió:
Estoy usando las indicaciones de este post de vuestro foro:
Para ejecutar consultas SQL de Select me funciona perfectamente. Pero cuando intento ejecutar una consulta de Insert (para insertar un registro) usando en Visual C# .Net:
OdbcCommand.ExecuteNonQuery
Con la consulta SQL siguiente:
insert into factura (codigocliente, observacion) values (2,'Prueba');
Me aparece el siguiente error y no me inserta el registro:
---------------------------
Error Facturación y Contabilidad
---------------------------
ERROR [22P02] ERROR: el valor de array debe comenzar con «{» o información de dimensión;
Error while executing the query
---------------------------
Aceptar
---------------------------
El código Visual C# que uso para insertar un registro en una BD PostgreSQL mediante ODBC es:
Código:
OdbcCommand comandoSQL;
string consultaSQL;
try
{
consultaSQL = "insert into factura (codigocliente, observacion) values (2,'Prueba');
comandoSQL = new OdbcCommand(consultaSQL, conexionBDODBC);
comandoSQL.ExecuteNonQuery();
MessageBox.Show("Registro insertado en PostgreSQL correctamente con ODBC y C Sharp");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
¿Qué estoy haciendo mal?
¿Tienes la consulta SQL de creación de la tabla "factura"? en PostgreSQL. Si no la tienes al menos consulta el tipo de dato del campo "observacion" y nos lo posteas.
Publicado:
Sab Jul 07, 2012 10:10 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: Re: PostgreSQL C# ERROR 22P02: el valor de array debe comenz
Anuncios
alonsojpd escribió:
¿Tienes la consulta SQL de creación de la tabla "factura"? en PostgreSQL. Si no la tienes al menos consulta el tipo de dato del campo "observacion" y nos lo posteas.
En pgAdmin III en el tipo de dato para la columna "observacion" de la tabla "factura" pone "text[]" ¿esto te vale?
Publicado:
Sab Jul 07, 2012 10:12 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: PostgreSQL C# ERROR 22P02: el valor de array debe comenz
Anuncios
varios escribió:
En pgAdmin III en el tipo de dato para la columna "observacion" de la tabla "factura" pone "text[]" ¿esto te vale?
El problema parece ser que está en el tipo de dato que usas para "observacion", haz copia de seguridad de los datos de PostgreSQL (si tienes datos válidos y está en producción) y cambia el tipo de dato de la columna "obserbacion" a "text", puedes hacerlo ejecutando la siguiente consulta SQL en pgAdmin:
Código:
ALTER TABLE factura
ALTER COLUMN obserbacion TYPE text;
El problema está en que en el tipo de dato, al crear la tabla "factura", seleccionaste "text[]" en vez de "text".
Publicado:
Sab Jul 07, 2012 10:15 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO] PostgreSQL C# ERROR 22P02: el valor de array debe
Anuncios
alonsojpd escribió:
El problema parece ser que está en el tipo de dato que usas para "observacion", haz copia de seguridad de los datos de PostgreSQL (si tienes datos válidos y está en producción) y cambia el tipo de dato de la columna "obserbacion" a "text", puedes hacerlo ejecutando la siguiente consulta SQL en pgAdmin:
Código:
ALTER TABLE factura
ALTER COLUMN obserbacion TYPE text;
El problema está en que en el tipo de dato, al crear la tabla "factura", seleccionaste "text[]" en vez de "text".
Ok, ya me funciona, lo he solucionado eliminando la columna "observacion" y volviéndola a crear con el tipo "text", efectivamente este era el problema. He eliminado la columna, obviamente, porque estoy en fase de pruebas y no tengo datos válidos.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A