powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL + БЛОБ объект.
11 сообщений из 11, страница 1 из 1
MS SQL + БЛОБ объект.
    #35494200
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При записи в БД в поле типа "image" БЛОБ объект (документ *.mht) в конец добавляется строка "System.Byte[]". Вот код записи в БД Блоб объекта:
_______________________________________________

// Считываем файл

string fileName = label2.Text;
Byte[] blob=null;
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
blob = new Byte[fileStream.Length];
fileStream.Read(blob, 0, blob.Length);
}

// Заносим в БД файл
commandText = @"UPDATE documents SET mht=@mht WHERE id=" + id.Text;
//Или INSERT

myCommand = new SqlCommand(commandText, conn);
myCommand.Parameters.Add("@tema", SqlDbType.NVarChar, 1500).Value = textBoxTema.Text;
myCommand.Parameters.Add("@mht", SqlDbType.Binary, blob.Length).Value = blob;
conn.Open();
myCommand.ExecuteNonQuery();
conn.Close();

_______________________________________________
Товарищи программеры подскажите в чём ошибка ?????
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35495900
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SqlParameter p = new SqlParameter("@mht", SqlDbType.VarBinary, blob.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, blob);
myCommand.Parameters.Add(p);
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35498492
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>> МСУ

Я извиняюсь, но всё равно вставляет в конец "документа" (формат mht) - "System.Byte[]"
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35499857
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkin>>> МСУ

Я извиняюсь, но всё равно вставляет в конец "документа" (формат mht) - "System.Byte[]"

А как Вы это видите?
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35500425
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>> А как Вы это видите?

Я Вам вішля код проги + БД ???
http://sharpdevelop.narod.ru/111111111111111111111111111111111111111111proga.rar

ОК ???
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35500437
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkin

Вы издеваетесь? Зачем весь солюшен нужен?

Вы можете сказать, с помощью чего Вы видите System.Byte[]?
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35501025
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БЛОБ-обект выгружается из БД в файл с расширением "mht" и потом я грушу его в "webBrowser" вот там и видно ! Можите посмотреть:

http://sharpdevelop.narod.ru/1.mht



Если я несколько раз загружая в БД файл у которого уже есть в конце "System.Byte[]" , то "System.Byte[]" вписывается ещё раз. Можите посмотреть:

http://sharpdevelop.narod.ru/2.mht
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35501285
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkin
Шаблоны (1.mht и 2.mht) уже содержат этот System.Byte[]. Почему?
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35501330
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, чё Вы меня лечите - только что проверил, всё работает.
Нормальный файл приложил в аттач.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
private void File2SqlBlob()
{
    try
    {
        using (SqlConnection cn = new SqlConnection("server=server;integrated security=yes;database=Test"))
        using (SqlCommand cmd = new SqlCommand("insert into dbo.Test values(@blob)", cn))
        using (FileStream fs = new FileStream(@"C:\1.mht", FileMode.Open, FileAccess.Read))
        {
            byte[] b = new Byte[fs.Length];
            fs.Read(b,  0 , b.Length);
            SqlParameter p = new SqlParameter("@blob", SqlDbType.VarBinary, b.Length, ParameterDirection.Input, false,  0 ,  0 , null, DataRowVersion.Current, b);
            cmd.Parameters.Add(p);
            cn.Open();
            if (cmd.ExecuteNonQuery() ==  1 )
                MessageBox.Show("Your images stored successfully");                 
        }
    }
    catch (SqlException ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void SqlBlob2File()
{
    try
    {
        using (SqlConnection cn = new SqlConnection("server=server;integrated security=yes;database=Test"))
        using (SqlCommand cmd = new SqlCommand("select top 1 blob from dbo.Test", cn))
        {
            cn.Open();
            using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            using (FileStream fs = new FileStream(@"C:\2.mht", FileMode.Create, FileAccess.Write))
                if (dr.Read())
                {
                    byte[] b = new byte[(dr.GetBytes( 0 ,  0 , null,  0 , int.MaxValue))];
                    dr.GetBytes( 0 ,  0 , b,  0 , b.Length);
                    fs.Write(b,  0 , b.Length);
                }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35501333
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MS SQL + БЛОБ объект.
    #35502105
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я извиняюсь, за то что занял Ваше время !!!
У меня был "неправильный" код сохранения документа на диск:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
                conn = new SqlConnection(connectionString.Text);
                SQL_MHT_SELECT = new SqlCommand("SELECT mht FROM documents WHERE id=" + s, conn); 
                string fileName = Application.StartupPath + @"\Temp\" + s + ".mht";
                FileStream filestream = File.Open(fileName, FileMode.Create, FileAccess.Write);
                if (filestream != null)
                {
                    //Создаем объект streamwriter и связываем его с потоком filestream
                    StreamWriter streamwriter = new StreamWriter(filestream);
                    BinaryWriter bw = new BinaryWriter(filestream);
                    int bufferSize =  20000000 ;
                    byte[] buffer = new byte[bufferSize];
                    long startIndex =  0 ;
                    int columnIdx =  0 ;
                    //bool doc_null = false;
                    try
                    {
                        conn.Open();
                        myReader = SQL_MHT_SELECT.ExecuteReader();
                        myReader.Read();

                        long retval = myReader.GetBytes(columnIdx, startIndex, buffer,  0 , bufferSize);
                        while (retval == bufferSize)
                        {
                            bw.Write(buffer);
                            bw.Flush();

                            startIndex += bufferSize;
                            retval = myReader.GetBytes(columnIdx, startIndex, buffer,  0 , bufferSize);
                        }
                        bw.Write(buffer,  0 , (int)retval);
                        bw.Flush();

                        streamwriter.Write(buffer);
                        //Переносим данные из потока в файл
                        streamwriter.Flush();
                        streamwriter.Close();
                        conn.Close();
                    }
                    catch (Exception excp) { conn.Close(); MessageBox.Show("ERROR: " + excp.ToString()); }

                }


он вписывал в конец "System.Byte[]"

Вы дали "правильный" код - теперь всё работает отлично !!!
Большое Вам спасибо !!! И ещё раз измените !!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL + БЛОБ объект.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]