|
|
|
Изменение полей text/ntext/image из ADO.NET
|
|||
|---|---|---|---|
|
#18+
Порылся по MSDN, не смог найти как. Чтение есть, а вот изменять - не знаю. Если кто кинет кусочек кода (желательно на С#, но можно VB.NET) или ссылку на ТУ страничку MSDN буду благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2002, 19:09:17 |
|
||
|
Изменение полей text/ntext/image из ADO.NET
|
|||
|---|---|---|---|
|
#18+
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(); } Пример взят отсюда . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2002, 20:50:04 |
|
||
|
Изменение полей text/ntext/image из ADO.NET
|
|||
|---|---|---|---|
|
#18+
Всё бы хорошо, спасибо за пример (не знаю, что ж я его раньше не приметил, да и про то, что байтовый массив передать можно знал), но размеры поля могут быть достаточно большими (до 10-15 Мб) и разом в память их некультурно как-то вливать... Поэтому и спрашивал. Думал, что может есть возможность оформить эту вещь через что-то типа Stream.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2002, 21:21:03 |
|
||
|
Изменение полей text/ntext/image из ADO.NET
|
|||
|---|---|---|---|
|
#18+
Я слегка изменил конструкцию из примера и убедился, что вариант 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 продвигать. Ну-с и зацикливаем это все, ясное дело, пока файл не кончится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2002, 00:28:03 |
|
||
|
Изменение полей text/ntext/image из ADO.NET
|
|||
|---|---|---|---|
|
#18+
СПАСИБО! То, что надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2002, 09:24:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32050591&tid=1820335]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 310ms |

| 0 / 0 |
