Emmablakes Ответов: 1

Как устранить ошибку "невозможно привести объект типа 'system. int16' к типу ' system. byte []'."


Я пытаюсь получить изображение из базы данных oracle.

у меня есть веб-форма, где я хочу, чтобы изображение отображалось, как только я нажму на кнопку Отправить.

проблема, с которой я столкнулся, заключается в том, что он выдает ошибку, говоря "
Unable to cast object of type 'System.Int16' to type 'System.Byte[]'.

- как только дойдет
context.Response.BinaryWrite((byte[])dr);

часть и когда, если я закомментирую ее полностью, изображение не появится на странице.

спасибо

Что я уже пробовал:

public void ProcessRequest (HttpContext context)
{
пробовать
{
строки cusNum = контекст.Запрос.Файл querystring["cus_Num"].Метод toString();
строки braCode = контекст.Запрос.Файл querystring["bra_Code"].Метод toString();

OracleConn объекта oracleconnection = нового объекта oracleconnection(оракул);
OracleConn.Открыть();
строка запроса = "выбрать * из Acct_sig где CUS_NUM= :CUS_NUM и BRA_CODE= :BRA_CODE и SIG_SEQ= :SIG_SEQ";
OracleCommand OraC = new OracleCommand(query, OracleConn);
OraC.CommandType = CommandType. Text;
Орак.Параметры.Add (new OracleParameter("CUS_NUM", OracleDbType.Varchar2, ParameterDirection.Вход)).Значение = cusNum;
Орак.Параметры.Add (new OracleParameter ("BRA_CODE", OracleDbType.Varchar2, ParameterDirection.Вход)).Значение = braCode;
Орак.Параметры.Add (new OracleParameter("SIG_SEQ", OracleDbType.Десятичная Дробь, Параметрическое Направление.Вход)).Значение = 1;

объект dr = OraC. ExecuteScalar();

OracleConn.Рядом();
Ораклеконн.Располагать();
контексте.Ответ.BinaryWrite ((byte[])dr);
}
поймать (исключение бывший)
{

экс.Метод toString();
}

}

1 Ответов

Рейтинг:
0

OriginalGriff

ExecuteScalar возвращает одно значение: в этом случае он возвращает первое значение первой строки. Что это будет, будет зависеть от дизайна БД и может быть изменено, если таблица БД будет изменена.
Если вам нужно одно конкретное значение, измените свой запрос так, чтобы он возвращал одно конкретное значение:

SELECT UserID FROM Mytable WHERE UserName='Emmablakes'
В противном случае используйте DataReader или DataAdapter для возврата нескольких значений или нескольких строк.


Emmablakes

@OriginalGriff, я изменил запрос ("select SIGNATURE from Acct_sig where CUS_NUM=: CUS_NUM and BRA_CODE=: BRA_CODE and SIG_SEQ=: SIG_SEQ"), чтобы вернуть одно значение, но проблема теперь в том, что он не отображает никакого изображения после успешного запуска.
пожалуйста, что мне делать?

OriginalGriff

А что говорит вам отладчик, когда вы возвращаетесь?