c # / asp.net показать двоичные данные из базы данных - PullRequest
2 голосов
/ 10 июля 2011

Я искал, как извлечь двоичные данные из базы данных.Мой запрос работает нормально, так как он показывает двоичные данные в диспетчере SQL.

Но в Visual Studio 2010 он просто показывает мне <Binary Data>, что, на мой взгляд, не является проблемой, но если я пытаюсь получитьи сохранить его в переменной, это просто пусто.Любой другой запрос работает до тех пор, пока он не имеет ничего общего с двоичными данными ...

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

SqlCommand CMDbinary = new SqlCommand("SELECT Binary_field AS binary "
                                      + "FROM BIN_table", abc_conn);

SqlDataReader Bin_retriever = CMDbinary.ExecuteReader();
while (Bin_retriever.Read())
{
    BIN.Add(Bin_retriever["binary"].ToString());
}
abc_conn.Close();

Я знаю, что это не полный код, но здесь все идет не так, я предполагаю, что мне нужно сделать что-то особенное, чтобы отобразить двоичную информацию, как (я скажу это снова)это работает, если я изменю Binary_field на UID (что является varchar в базе данных).

Любая помощь по этому вопросу будет действительно приветствоваться, заранее спасибо!

1 Ответ

3 голосов
/ 10 июля 2011
 Bin_retriever["binary"].ToString()

выглядит смертельно. Для двоичных данных вы можете получить byte[] здесь. Вы не можете просто позвонить ToString() на таких - вы, вероятно, получите имя типа. Итак, как бы вы хотели отобразить это? шестигранный

byte[] raw = (byte[]) Bin_retriever["binary"];

Теперь форматируйте по вашему выбору. Например:

var builder = new StringBuilder(raw.Length * 2);
for(int i = 0 ; i < raw.Length ; i++)
    builder.Append(raw[i].ToString("x2"));
string hex = builder.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...