Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / MS SQL + БЛОБ объект. / 11 сообщений из 11, страница 1 из 1
19.08.2008, 11:10
    #35494200
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL + БЛОБ объект.
При записи в БД в поле типа "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
19.08.2008, 22:30
    #35495900
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL + БЛОБ объект.
Код: 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
21.08.2008, 10:53
    #35498492
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL + БЛОБ объект.
>>> МСУ

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

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

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

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

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

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

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

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



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

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

Код: 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
22.08.2008, 12:31
    #35501333
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL + БЛОБ объект.
...
Рейтинг: 0 / 0
22.08.2008, 15:59
    #35502105
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL + БЛОБ объект.
Я извиняюсь, за то что занял Ваше время !!!
У меня был "неправильный" код сохранения документа на диск:

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


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