Извлеките Blob-объекты из базы данных SQL и запишите их в файл, когда у меня будет нужный образ
Тайм-аут истек. Время ожидания истекло до завершения операции или сервер не отвечает.
Я не уверен на 100%, что закодировал все правильно.
Таблица adsblobfile состоит из:
blob_image varbinary (MAX)
тип uniqueidentifier file_guid
размер_файла инт
Все в Интернете использует идентификатор, определенный как int; однако мой file_guid является uniqueidentifier.
Не мог бы кто-нибудь сказать мне, что я делаю не так? Спасибо.
Что я уже пробовал:
общественного недействительными getblob(в строку doc1,country_client строку,строку varPathToNewLocation)
{
пробовать
{
using (SqlConnection varConnection = new SqlConnection(ConnectionString2))
{
Sqlcommand, который getpic = новая команда sqlcommand(@"выбрать различные б.blob_image,г.название,Год.mime_type,б.размер_файла " +
"Из adsdocument y" +
"Внутреннее соединение adsindex x" +
"О (Х.doc_guid = г.doc_guid )" +
"Внутреннее соединение adspage p" +
"О (Х.doc_guid = стр. doc_guid) " +
"Внутреннее соединение adsfileblob b" +
"На (стр. file_guid = б.file_guid) " +
"Левое внешнее соединение agltransact t" +
"На (литой(т. voucher_no как varchar(50)) = х.doc_index_2 ) и (T.клиент = Х.doc_index_1 ) " +
"Где x. doc_index_1 = @country" +
"AND y. title = @doc", varConnection);
getpic.Параметры.Добавить("@страна", значения sqldbtype.Тип nvarchar,50).Значение = country_client;
getpic.Параметры.Добавить("@док", значения sqldbtype.Тип nvarchar,50).Значение = doc1;
FileStream fs; / / записывает BLOB-объект в файл (*. bmp)
BinaryWriter bw; / / передает BLOB-объект в объект FileStream
int buffersize = 1000; / / размер буфера BLOB-объектов
byte[] buffer = новый байт[buffersize];
байт[] outbyte = новый байт[параметр bufferSize]; // двоичный байт[] буфера, которые должны быть заполнены метод getbytes
long numberofbytes = 0;
//long retval; / / байты, возвращаемые из GetBytes
long startindex = 0; / / начальная позиция в выводе BLOB-объекта
//string var_id =""; / / идентификатор, используемый в имени файла
if (varConnection.State != ConnectionState.Открыть)
{
варконнекция.Открыть();
}
SqlDataReader myReader = getpic.ExecuteReader(CommandBehavior.SingleRow);
myReader.Читать();
// Создайте файл для хранения выходных данных
string filname = varPathToNewLocation.ToString () + "\ \ " + doc1.Метод toString();
fs = new FileStream(filname, FileMode.OpenOrCreate, FileAccess.Пиши, Файлообменник.Писать);
bw = новый BinaryWriter(fs);
делать
{
numberofbytes = myReader.Метод getbytes(0, параметр startindex, буфер, 0, параметр bufferSize);
if (numberofbytes == 0)
{
перерыв;
}
bw. Write(buffer, 0, (int)numberofbytes);
startindex += numberofbytes;
} while (true);
чёрно-белый.Промывать();
ZurdoDev
Ошибка говорит о том, что вам нужно увеличить CommandTimeout на getpic.