Guardando campo de tipo imagen SQL y SQLCE

Estoy trabajando en una aplicación móvil con web services, para trasladar de un lugar a otro los datos del sql y sqlce es decir tenerlos sincronizandolos, mi duda viene aquí:
Cuando estoy sincronizando para traer los datos del sql, tengo un campo de tipo imagen al cual debo enviarle a la base de datos del móvil, pero lo esta reconociendo como 0, y al intentar grabar me sale:
The conversion is not supported. [ Type to convert from (if known) = nvarchar, Type to convert to (if known) = image ]
Estuve probando con dbo. Null y pues me sale el mismo error.
¿Podrías ayudarme porque me esta saliendo este valor?

1 Respuesta

Respuesta
1
El tema es el siguiente: si pasas una imagen por un web service, debes convertir la imagen a un array de bytes, y luego convertir al arraya de bytes en la PDA a imagen o grabar ese array de bytes en la base de datos SQlCE.
Realmente es mala practica hacer lo que haces, pasar como datos una imagen desde un servidor a la PDA, máxime que las imágenes son muy grandes y necesitaras mucho anco de banda y una conexión estable para transmitir estas imágenes.
Bueno por si me dijeras que es error en la consulta no creo que sea pero = te paso los enunciados para ver aunque ya los ejecute en sql y no paso nada:
comillas en dbnull.value
cmd.CommandText = "Insert Into Signatures(Id, DateCreated, Signature, Name, Estado) Values (" & oUser.PropId & ", " & oUser.PropDateCreated & ", '" & DBNull.Value & "', '" & oUser.PropName & "', '" & oUser.PropEstado & "')"
sin comillas con el dbnull.value
cmd.CommandText = "Insert Into Signatures(Id, DateCreated, Signature, Name, Estado) Values (" & oUser.PropId & ", " & oUser.PropDateCreated & ", " & DBNull.Value & ", '" & oUser.PropName & "', '" & oUser.PropEstado & "')"
aqui devuelve un valor 0
cmd.CommandText = "Insert Into Signatures(Id, DateCreated, Signature, Name, Estado) Values (" & oUser.PropId & ", " & oUser.PropDateCreated & ", '" & oUser.PropSignature& "', '" & oUser.PropName & "', '" & oUser.PropEstado & "')"
ojala me puedas ayudar =) pues estos 3 casos me sale este error:
There was an error parsing the query. [ Token line number = 1,Token line offset = 86,Token in error = 10 ]
Hola experto, =) bueno si lo estoy enviando como array de bytes desde el webserv, solo que estoy probando para futuras aplicaciones eh creado registros pero con el campo image que por ahora están null en el SQL Server, el problema viene ahí cuando intento insertar con un registro null sale el bendito error, claro que esas imágenes tan solo serán firmas y solo mandare una.
A ver si me aclaras un poco más la idea gracias.
EN la tabla configúrala o definela que el campo de imagen acepte nulos, luego cuando recibes la información del web service si la imagen no viene pues escribes el registro con NULL, y no con el array de bytes.
Bueno intente eso tambien, tambien le pase el sys.dbnull le pase nulo como texto y nada =(
insert into tablaimagen ( Id, campoImagen) values ( 1, null)
Si también hice eso y nada, porque será, el campo de la tabla de mi sqlce es image y le puse permitir nulos, eh ingresado físicamente con el valor null y si lo agrega. Pero cuando lo inserto por consulta nada aún.
¿Cómo es la sentencia sql que estas utilizando para hacer el insert?
Dim Null as string = "Null"
cmd.CommandText = "Insert Into Signatures(Id, DateCreated, Signature, Name, Estado) Values (" & oUser.PropId & ", " & oUser.PropDateCreated & ", " Null ", '" & oUser.PropName & "', '" & oUser.PropEstado & "')"
...
oUser.PropDateCreated & ", " & Null & ", '" & oUser.PropName &
Flataban los & antes y despues d ela variable Null
Oh perdona por molestar tanto, pues también lo pobre y lo acabo de probar y aún así no acepta =( que podrá ser me quiero cortar la cabeza.
Entonces colocalo de esta manera:
...
oUser.PropDateCreated & ",  NULL, '" & oUser.PropName & ....
Como puedes ver el NULL esta dentro de las comillas y escrito dentro de la cadena del query.
Si no simplemente quita el campo de la instrucción Insert y al no estar se llena con nulos
Ahora me sale IndexOutRangeException, ahora también estoy tratando de enviar ya datos existentes del sqlserver al sqlce y me sale esto:IndexOutRangeException.
Estas tratando de acceder a un item de un array o un arreglo que no existe.
Excelente respuesta
Gracias por tu ayuda lo que hice fue otro método de inserción es decir de esta forma:
Si es nulo en caso contrario solo le mando el parámetro
cmd.CommandText = "insert into Signatures (ID, DateCreated, Signature, Name, Estado) VALUES (@ID, @DateCreated, @Signature, @Name, @Estado)"
param = New SqlCeParameter("@Signature", Data.SqlDbType.Image)
cmd.Parameters.Add(param)
cmd.Parameters("@Signature").Value = DBNull.Value.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas