Я сталкиваюсь с проблемой при попытке прочитать данные из столбца Varbinary (max) из базы данных SQL Server и сохранить их в файл изображения.
База данных SQL Server является результатом миграции из базы данных Access с использованием инструмента SSMA. Из студии управления SQL Server я вижу, что данные в столбце похожи на < /p>
0x151C1C0003......
Я использую C# и Entity Framework для получения значения столбца в Byte [] .
Тогда я использую MemoryStream с byte [] , а затем, как вы можете увидеть в коде, я пытаюсь установить изображение variate
=Image.FromStream(byte[])
< /code>
, который вызывает исключение: < /p>
system.argumentException: «Параметр недопустим.» Я попробовал все, что я нашел в Интернете, как конвертировать в строку base64, а затем вернуться к Byte [] , затем в MemoryStream , но я получаю ту же ошибку. Найдя, многие люди спрашивали об этом, а некоторые никогда не нашли решение или, если обнаружили, что не опубликованы или предоставленные решения не работают для меня. Приложение работает на .NET Framework 4.8. < /P>
Вот код, бросающий ошибку: < /p>
var i = (context.Mans
.Where(a => a.Code == 111)
.Select(a => a.FOTO)
.Single().ToArray());
using (var ms = new MemoryStream(i))
{
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin);
Image foto = Image.FromStream(ms);
foto.Save($"{Application.StartupPath}\\foto.jpg");
}
Я также пытался получить данные из столбца Foto через SQLConnection , но я все еще не повезло. Работа. < /p>
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
public static byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}
byte[] HexAsBytes = new byte[hexString.Length / 2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);
HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
return HexAsBytes;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -not-valid
Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим». ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
System.ArgumentException: параметр типа таблицы должен иметь допустимое имя типа.
Anonymous » » в форуме C# - 0 Ответы
- 83 Просмотры
-
Последнее сообщение Anonymous
-