2015-03-09 3 views
2

Я обычно использую синтаксис linq для извлечения данных из таблиц, но в этом случае при извлечении капли Я столкнулся с проблемой, когда linq не способен обрабатывать большие капли.Извлечь blob в объект linq

И поэтому я пытаюсь извлечь сгустки, используя этот путь:

 var li = new List<linq_table1>(); 

     using (SqlConnection conn = new SqlConnection(connectionString)) 
     { 
      conn.Open(); 
      using (var command = conn.CreateCommand()) 
      { 
       command.CommandText = "SELECT blob FROM table1"; 
       var reader = command.ExecuteReader(); 

       while (reader.Read()) 
       { 
        var row = new linq_table1; 
        row.blob = reader[0] as System.Data.Linq.Binary; 
       } 

      } 
      conn.Close(); 
     } 
    } 

linq_table1 является DBML таблица table1, которая содержит только один столбец с типом VARBINARY (BLOB). reader[0] as System.Data.Linq.Binary, хотя возвращает null, когда строка в таблице содержит blob.

+0

попробовать '(байт []) читателя [ "клякса"]' – Izzy

+0

Спасибо это сработало! Не могли бы вы отправить ответ, чтобы я мог его принять? Кроме того, если моя таблица1 получила столбец datetime, как мне передать читателю [1] (содержащему дату, но в типе) значение DateTime (sql)? Попытка бросить в System.DateTime дает ошибку: 'Оператор as должен использоваться с ссылочным типом или типом с нулевым значением ('System.DateTime' - тип значения, который не является нулевым)' –

ответ

4

Это то, что вы ищете

(byte[])reader["blob"]; 

Далее чтение here

+0

Я рад, что это сработало для вас. В дополнение к вашему комментарию вы можете посмотреть [здесь] (http://stackoverflow.com/questions/295833/nullable-type-issue-with-conditional-operator) – Izzy

+0

Большое вам спасибо. –

+0

Вы больше всего приветствуетесь – Izzy

Смежные вопросы