Есть проблема при чтении BLOB-а из таблицы БД Sybase.
Первоначально код работал на .NET 1.1 Всё было замечатьно до перехода на .NET 2.0
Проблема заключается в том что при вычитывании поля возвращается массив байтов нулевой длины. Вот кусок кода читающий BLOB:
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select FileBlob from Documents where DocumentID = " + id;
OleDbDataReader rdr = cmd.ExecuteReader();
if (rdr.Read()) {
String name = Convert.ToString(rdr["FileName"]);
Byte[] buffer = (Byte[]) rdr["FileBlob"];
}
В .NET 1.1 всё прекрасно читалось. Я переписал этот кусок так:
command = new OleDbCommand(
"select FileBlob from Documents where DocumentID=" + id,
conn
);
rdr = command.ExecuteReader(CommandBehavior.SequentialAccess);
if (rdr.Read()) {
buffer = new Byte[size];
rdr.GetBytes(0, 0, buffer, 0, buffer.Length);
}
В результате на строке "rdr.GetBytes(0, 0, buffer, 0, buffer.Length);" я получаю вот такой exception: System.Data.OleDb.OleDbException: Invalid cursor position
Помогите, пзл, разобраться в чем тут дело. Или код не правильные или Sybase виноват.