BLOB и RTF
От: Аноним  
Дата: 09.04.04 05:35
Оценка:
Есть вордовские файлы, которые я подгружаю из БД и загружаю в RichTextBox, вопрос такой — обязательно ли делать временный файл и потом загружать его в контрол или можно обойтись. Спасибо

09.04.04 12:15: Перенесено модератором из '.NET' — AVK
Re: BLOB и RTF
От: V.Petrovski Беларусь  
Дата: 09.04.04 05:49
Оценка:
Ну смотря какой велечены файлы и как себя ведет RichTextBox с такими фалами.
Ну а если все не таких уж огромных размеров, то наверное так

// BLOB из БД
void WriToRichTextBox(byte[] blob)
{
        // только вот с кодировкой надо будет наверное
        // тебе разобраться
        richTextBox.Rtf = System.Text.Encoding.GetEncoding(1251).GetString(blob);
}
... << RSDN@Home 1.1.3 stable Ночные Снайперы — Цунами>>
Re[2]: BLOB и RTF
От: Аноним  
Дата: 09.04.04 06:31
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

VP>Ну смотря какой велечены файлы и как себя ведет RichTextBox с такими фалами.

VP>Ну а если все не таких уж огромных размеров, то наверное так

VP>
VP>// BLOB из БД
VP>void WriToRichTextBox(byte[] blob)
VP>{
VP>        // только вот с кодировкой надо будет наверное
VP>        // тебе разобраться
VP>        richTextBox.Rtf = System.Text.Encoding.GetEncoding(1251).GetString(blob);
VP>}
VP>

А если BLOB содержит картинки и прочие навороты — это все отобразится?
Re[3]: BLOB и RTF
От: nap2k Верблюд есть
Дата: 09.04.04 06:43
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, V.Petrovski, Вы писали:


VP>>Ну смотря какой велечены файлы и как себя ведет RichTextBox с такими фалами.

VP>>Ну а если все не таких уж огромных размеров, то наверное так

VP>>
VP>>// BLOB из БД
VP>>void WriToRichTextBox(byte[] blob)
VP>>{
VP>>        // только вот с кодировкой надо будет наверное
VP>>        // тебе разобраться
VP>>        richTextBox.Rtf = System.Text.Encoding.GetEncoding(1251).GetString(blob);
VP>>}
VP>>

А>А если BLOB содержит картинки и прочие навороты — это все отобразится?

нет конечно
<<не против свалить за бугор>>
Re[4]: BLOB и RTF
От: Аноним  
Дата: 09.04.04 06:53
Оценка:
Здравствуйте, nap2k, Вы писали:
N>нет конечно

Тада поняно, что без файла не обойтись
Re: BLOB и RTF
От: baa29  
Дата: 09.04.04 08:15
Оценка:
void WriteToRichTextBox(byte[] blob)
{
MemoryStream stream = new MemoryStream(blob);
myRichTextBox.LoadFile(stream, RichTextBoxStreamType.RichText);
}
wrote in message news:600315@news.rsdn.ru...
From:

Есть вордовские файлы, которые я подгружаю из БД и загружаю в RichTextBox, вопрос такой — обязательно ли делать временный файл и потом загружать его в контрол или можно обойтись. Спасибо

BLOB и RTF Оценить
Posted via RSDN NNTP Server 1.8 beta
Re: BLOB и RTF
От: Аноним  
Дата: 09.04.04 08:47
Оценка:
Спасибо
Re[2]: BLOB и RTF
От: Аноним  
Дата: 12.04.04 09:13
Оценка:
Здравствуйте, baa29, Вы писали:

B>void WriteToRichTextBox(byte[] blob)

B>{
B> MemoryStream stream = new MemoryStream(blob);
B> myRichTextBox.LoadFile(stream, RichTextBoxStreamType.RichText);
B>}

Это все работает, но у меня новая проблема, как записать данные обратно в БД. Использую следующий ужас, но он не работает:

byte[] DopSved = null;

myRichTextBox.SaveFile(new MemoryStream(DopSved = new byte[/* Как определить количество байт я не нашел */]), RichTextBoxStreamType.RichText);
((DataRowView)BooksGrid.BindingContext[dataSet, "Books"].Current)["DopSved"] = (object)DopSved;
daBooks.Update(dataSet);


Заранее спасибо
Re[3]: BLOB и RTF
От: Аноним  
Дата: 12.04.04 10:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>byte[] DopSved = null;

А>myRichTextBox.SaveFile(new MemoryStream(DopSved = new byte[/* Как определить количество байт я не нашел */]), RichTextBoxStreamType.RichText);
А>((DataRowView)BooksGrid.BindingContext[dataSet, "Books"].Current)["DopSved"] = (object)DopSved;
А>daBooks.Update(dataSet);
А>


А>Заранее спасибо


например можно так:

byte[] GetRichTextContent() {
MemoryStream stream = new MemoryStream();
MyRichTextBox.SaveFile(stream, RichTextBoxStreamType.RichText);
return stream.GetBuffer();
}
Re[4]: От Анонима Анониму
От: Аноним  
Дата: 12.04.04 10:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>например можно так:


А>
А>byte[] GetRichTextContent() {
А>MemoryStream stream = new MemoryStream();
А>MyRichTextBox.SaveFile(stream, RichTextBoxStreamType.RichText);
А>return stream.GetBuffer();
А>}
А>


Спасибо, Анонимный друг, сейчас испробую
Re[4]: То ли лыжи не едут
От: Аноним  
Дата: 12.04.04 12:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>
А>>byte[] DopSved = null;

А>>myRichTextBox.SaveFile(new MemoryStream(DopSved = new byte[/* Как определить количество байт я не нашел */]), RichTextBoxStreamType.RichText);
А>>((DataRowView)BooksGrid.BindingContext[dataSet, "Books"].Current)["DopSved"] = (object)DopSved;
А>>daBooks.Update(dataSet);
А>>


А>>Заранее спасибо


А>например можно так:


А>
А>byte[] GetRichTextContent() {
А>MemoryStream stream = new MemoryStream();
А>MyRichTextBox.SaveFile(stream, RichTextBoxStreamType.RichText);
А>return stream.GetBuffer();
А>}
А>


Эти блобы достали. Почему вот такой код не работает

                    MemoryStream blob = new MemoryStream();
                    frmInfo.TextInfo.SaveFile(blob, RichTextBoxStreamType.RichText);
                    ((DataRowView)BooksGrid.BindingContext[dataSet, "Books"].Current)["DopSved"] = blob.GetBuffer();
                    daBooks.Update(dataSet);

В итоге ничего путного в БД не пишется, при считывании RichTextBox пуст
Спасибо
Re[5]: То ли лыжи не едут
От: Аноним  
Дата: 12.04.04 12:26
Оценка:
Забыл написать, что читаю так

            DopSved = ((DataRowView)BooksGrid.BindingContext[dataSet, "Books"].Current)["DopSved"];
                        fs.Write((byte[]) DopSved, 0, ((byte[])DopSved).Length);
            frmInfo.TextInfo.LoadFile(new MemoryStream((byte[])DopSved), RichTextBoxStreamType.RichText);
Re[6]: То ли лыжи не едут
От: Аноним  
Дата: 13.04.04 06:30
Оценка:
Проблема в том, что в БД пишется какая-то усеченная ерунда, т.к. параметр для UPDATE определен так:

daBooks.UpdateCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Dop_Sved", System.Data.SqlDbType.Image, 16, "DopSved"));


Какой же size необходимо указывать или его все время нужно менять в зависимости от размера BLOBA
Re[7]: То ли лыжи не едут
От: baa29  
Дата: 13.04.04 07:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Проблема в том, что в БД пишется какая-то усеченная ерунда, т.к. параметр для UPDATE определен так:


А>
А>daBooks.UpdateCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Dop_Sved", System.Data.SqlDbType.Image, 16, "DopSved"));
А>


А>Какой же size необходимо указывать или его все время нужно менять в зависимости от размера BLOBA


Никогда не работал с DataGrid-ом и ничего не могу сказать по этому поводу, но может поможет...

тип данных Image MSSQL Server-а всегда имеет фиксированный размер 16, и поэтому нет необходимости менять его от размера BLOB-a.

а для апдейта блоба достаточно выполнить:

SqlCommand sqlCmd = new SqlCommand("UPDATE someTable SET myBlobField = @rtf");
sqlCmd.Connection = m_MyConnection;
sqlCmd.Parameters.Add("@rtf", GetMyNewRichTextContent() /* вертает byte[] */);
sqlCmd.ExecuteNonQuery();


В твоей же ситуации, IMHO, "DopSved" колонка не содержит актуальный массив байтов нового rtf.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.