powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Изменение полей text/ntext/image из ADO.NET
6 сообщений из 6, страница 1 из 1
Изменение полей text/ntext/image из ADO.NET
    #32050583
Speshuric2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Порылся по MSDN, не смог найти как. Чтение есть, а вот изменять - не знаю. Если кто кинет кусочек кода (желательно на С#, но можно VB.NET) или ссылку на ТУ страничку MSDN буду благодарен
...
Рейтинг: 0 / 0
Изменение полей text/ntext/image из ADO.NET
    #32050591
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
using System.Data;
using System.Data.SqlClient;
using System.IO;

public void Main()
{
SqlConnection con = new SqlConnection("Server=Darkover;uid=sa;pwd=Password1;database=northwind");
SqlDataAdapter da = new SqlDataAdapter("Select * From MyImages", con);
SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
DataSet ds = new DataSet("MyImages");

da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
FileStream fs = new FileStream(@"C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, FileAccess.Read);

byte[] MyData= new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));

fs.Close();

da.Fill(ds,"MyImages");

DataRow myRow;
myRow=ds.Tables["MyImages"].NewRow();

myRow["Description"] = "This would be description text";
myRow["imgField"] = MyData;
ds.Tables["MyImages"].Rows.Add(myRow);
da.Update(ds, "MyImages");

con.Close();

}

Пример взят отсюда .
...
Рейтинг: 0 / 0
Изменение полей text/ntext/image из ADO.NET
    #32050593
Speshuric2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё бы хорошо, спасибо за пример (не знаю, что ж я его раньше не приметил, да и про то, что байтовый массив передать можно знал), но размеры поля могут быть достаточно большими (до 10-15 Мб) и разом в память их некультурно как-то вливать... Поэтому и спрашивал. Думал, что может есть возможность оформить эту вещь через что-то типа Stream....
...
Рейтинг: 0 / 0
Изменение полей text/ntext/image из ADO.NET
    #32050595
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я слегка изменил конструкцию из примера и убедился, что вариант

FileStream fs = new FileStream(@"c:\temp\В лесу родилась елочка.mp3", FileMode.OpenOrCreate, FileAccess.Read);
byte[] MyData= new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
SqlConnection cn = new SqlConnection("Server=(local);uid=sa;pwd=pizdec;database=northwind");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "if exists(select 1 from information_schema.tables where table_name = 'Empl' and table_type = 'BASE TABLE') drop table Empl; select EmployeeID, Photo into Empl from Employees";
cmd.ExecuteNonQuery();
cmd.CommandText = "select TEXTPTR(photo) from Empl where EmployeeID = 1";
byte[] ptr = (byte[])cmd.ExecuteScalar();
cmd.CommandText = "UPDATETEXT Empl.photo @ptr @offset @length @content";
cmd.Parameters.Add("@ptr", System.Data.SqlDbType.Binary, 16).Value = ptr;
cmd.Parameters.Add("@offset", System.Data.SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@length", System.Data.SqlDbType.Int).Value = 0;
cmd.Parameters.Add("@content", System.Data.SqlDbType.Image).Value = MyData;
cmd.ExecuteNonQuery();
cn.Close();

тоже работает. Дальше развивать было лень, но идея понятна. В MyData читаем файл кусками и засовываем эти куски в BLOB-поле при пом. updatetext. Не забывайте только @offset продвигать. Ну-с и зацикливаем это все, ясное дело, пока файл не кончится.
...
Рейтинг: 0 / 0
Изменение полей text/ntext/image из ADO.NET
    #32050600
Speshuric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО! То, что надо!
...
Рейтинг: 0 / 0
Изменение полей text/ntext/image из ADO.NET
    #32050629
Makc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADO 2.7 , VB 6
Set Stream = New ADODB.Stream
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile file
pr_rsPictures("Picture") = Stream.Read

pr_rsPictures.Update
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Изменение полей text/ntext/image из ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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