En C#, ¿cómo puedo tomar el resultado textual que SQL Server Management Studio muestra como el contenido de una columna varbinary, y convertir ese texto en el byte [] que está almacenado en la columna?Representación de texto varbinary a byte []
Respuesta
SqlConnection conn = new SqlConnection(yourConnectionString);
SqlCommand cmd = new SqlCommand("select col from yourtable", conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
byte[] bytes = (byte[])reader[0];
}
reader.Close();
conn.Close();
OK, por lo que desea copiar y pegar el valor mostrado en SSMS para una columna varbinary (por ejemplo, "0x6100730064006600"), y obtener el byte [] de ella en C#?
Eso es bastante fácil: la parte que sigue a 0x solo tiene valores hexadecimales (2 caracteres cada uno). Por lo tanto, se toma cada par, convertirlo a un número que especifica una base de 16 (hex), y añadirlo a una lista, así:
string stringFromSQL = "0x6100730064006600";
List<byte> byteList = new List<byte>();
string hexPart = stringFromSQL.Substring(2);
for (int i = 0; i < hexPart.Length/2; i++)
{
string hexNumber = hexPart.Substring(i * 2, 2);
byteList.Add((byte)Convert.ToInt32(hexNumber, 16));
}
byte [] original = byteList.ToArray();
Renuncia - bastante poco fiable y el código unoptimal, sólo hackeado juntos con fines de demostración (aunque debería funcionar).
¿Por qué su código es poco óptimo? Parece bastante bien en mi opinión :) –
@ Żubrówka - En términos de legibilidad, no es tan malo; en términos de rendimiento, sin embargo, podríamos simplemente usar una matriz, ya que sabemos exactamente qué tan grande tendrá que ser. Utilizar una estructura de datos diferente y luego .ToArray() - me parece un poco flojo, pero lo hice principalmente por claridad y legibilidad :) –
me hizo el día. Muchas gracias – rank1
- 1. convertir cadena de texto a representación hexadecimal o representación binaria
- 2. Recuperar varbinary (MAX) de SQL Server a byte [] en C#
- 3. C# Convertir Char a Byte (representación hexadecimal)
- 4. Representación de un Kilo/Mega/Tera Byte
- 5. Rspec representación de texto
- 6. Java: byte [] a Byte []
- 7. Java - Byte [] a byte []
- 8. Conversión de una representación de bits en un byte
- 9. Representación de un flotante en un solo byte
- 10. Representación de diagramas UML a partir de archivos de texto
- 11. ¿Representación de texto similar a Mac en Windows?
- 12. Cómo insertar un byte [] en una columna VARBINARY de SQL Server
- 13. representación HTML dentro de área de texto
- 14. C: sobrescribir otro byte función a byte
- 15. varbinary a cadena en SQL Server
- 16. Byte Array a NSData
- 17. Comparar byte [] a T
- 18. conversión de DataHandler a byte []
- 19. Convertir de BitArray a Byte
- 20. Entity framework y VARBINARY
- 21. varbinary (max) datatype invalid
- 22. Convirtiendo Boolean a Byte en VB.NET
- 23. ¿Cómo guardar byte [] usando un procedimiento?
- 24. Cambiar el tipo de columna de ntext a varbinary (max)
- 25. byte + byte = resultado desconocido
- 26. ¿Qué tipo de SqlDbType se asigna a varBinary (max)?
- 27. Cómo convertir de varbinary a char/varchar en mysql
- 28. HTML sin representación en el campo de texto de Django
- 29. Problema de representación de texto IE9: se corta la cola
- 30. Problema de representación de Outlook, representando texto demasiado grande
Gracias, pero quiero cortar y pegar el texto de la ventana de SQL Server Management Studio. No quiero volver a consultar la base de datos. – Slaggg
SSMS es una aplicación cliente diseñada para mostrar datos formateados. No tendría una interfaz para acceder a los datos binarios subyacentes devueltos desde la base de datos. Para eso es la interfaz programática descrita en esta respuesta. SSMS es la herramienta incorrecta para esto. –
@ChrisSmith No estoy de acuerdo: el contenido textual que se muestra en la representación textual SSMS de los campos de datos binarios está claramente relacionado con los datos reales almacenados en el campo. – Slaggg