powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / System.InvalidCastException при вызове GetBytes
3 сообщений из 3, страница 1 из 1
System.InvalidCastException при вызове GetBytes
    #37582192
Mr_GOD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база данных SQLite. Использую ADO.NET, при попытке получить данные из поля BLOB с помощью GetBytes выподает System.InvalidCastException.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
command.CommandText = "SELECT * FROM [Question] WHERE [Test_Id] = @test_id";
command.Parameters.Add("@test_id", DbType.Int32).Value = test.Id;
var reader = command.ExecuteReader();

//...

var buffer = new byte[IMAGE_FIELD_SIZE];
Image image;
using (var stream = new MemoryStream())
{
  long bytesRead;
  while ((bytesRead = reader.GetBytes(reader.GetOrdinal("Image"), 0L, buffer, 0, buffer.Length)) > 0) // Исключение выпадает здесь
  {
    var actualRead = new byte[bytesRead];
    Buffer.BlockCopy(buffer, 0, actualRead, 0, (int) bytesRead);
    stream.Write(actualRead, 0, actualRead.Length);
  }
  image = ByteArrayToImage(stream.ToArray());
}



Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE [Question] (
  [Id] INTEGER PRIMARY KEY AUTOINCREMENT,
  [Text] NVARCHAR(500) NOT NULL,
  [Image] BLOB NULL DEFAULT NULL,
  [Test_Id] INTEGER NOT NULL,
  CONSTRAINT [FK_Question_to_Test] FOREIGN KEY ([Test_Id]) REFERENCES [Test] ([Id])
);



Не могу понять природу этого исключения по идее все типы верные и проблем быть не должно. Правда в базе возможны случае когда это поле будет иметь значение NULL.

Заранее спасибо

P.S.
Вот часть трассировки стека
Код: c#
1.
2.
в System.Data.SQLite.SQLiteDataReader.VerifyType(Int32 i, DbType typ)
в System.Data.SQLite.SQLiteDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length)


Если у вас есть фотоаппарат, вы крутой фотограф. Если у вас есть Visual Studio, то у вас есть Visual Studio.
...
Рейтинг: 0 / 0
System.InvalidCastException при вызове GetBytes
    #37582633
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну посмотрите тип сперва
Код: c#
1.
reader.GetDataTypeName(reader.GetOrdinal("Image"))

и вообще обычно пишется что во что не удалось сконвертить.
И почему у Вас второй параметр вечный ноль? How do i store and retrieve a blob from sqlite Копипаст - наше все.
...
Рейтинг: 0 / 0
System.InvalidCastException при вызове GetBytes
    #37592842
Mr_GOD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал все по тупому и просто. Зато работает))
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Image image;
try
{
  var buffer = new byte[IMAGE_FIELD_SIZE];
  reader.GetBytes(reader.GetOrdinal("Image"), 0L, buffer, 0, buffer.Length);
  image = ByteArrayToImage(buffer);
}
catch (InvalidCastException)
{
  image = null;
}
catch (InvalidOperationException)
{
  image = null;
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / System.InvalidCastException при вызове GetBytes
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]