powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MS Sql Server , как добавить в поле Image фото ?
6 сообщений из 6, страница 1 из 1
MS Sql Server , как добавить в поле Image фото ?
    #33352301
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здрасте всем !

Парни , есть надобность хранить в базе фото детишек ! Может есть у кого готовый шаблон и механика этого дела?

Как мне в VB6 добавить в поле image таблицы на серванте фото и как потом отобразить при просмотре ?

Еще вопрос в догонку ... фоток будет много ... на каждого ребенка не менее 7 штук , я решил не пихать их в основную таблицу , а пихнул в отдельную и повязал как один к одному ... целесообразно ? чтобы не тянуть весь объем данных ...

вообщем буду рад за прямые наставления ...
...
Рейтинг: 0 / 0
MS Sql Server , как добавить в поле Image фото ?
    #33352361
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
appendchunk в ф1
просмотр через tmp файл
аккуратно писать запросы, чтобы не гонять всю таблицу - т.е. select* from photo даст большой трафик, а вам например, нужно получить тока названия картинок тогда select fn, comment from photo where parentuid='...'.
...
Рейтинг: 0 / 0
MS Sql Server , как добавить в поле Image фото ?
    #33352367
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
Ну где-то вот таким образом:

Public Function InsertImage(adocn As Connection, m_name As String, m_text() As Byte, m_len As Long, _
    m_checksum As Long, ByVal m_id As Long) As Long
    
    Dim cmd          As New ADODB.Command
    Dim rs           As New Recordset
    Dim p1           As New ADODB.Parameter
    Dim p2           As New ADODB.Parameter
    Dim p3           As New ADODB.Parameter
    Dim p4           As New ADODB.Parameter
    Dim p_out        As New ADODB.Parameter
    
    On Error GoTo ERRH
    
    Set cmd.ActiveConnection = adocn
    cmd.CommandText = "InsertImage"
       
    cmd.CommandType = adCmdStoredProc

    Set p1 = cmd.CreateParameter("@name", adVarChar, adParamInput,  255 )
    cmd.Parameters.Append p1
    Set p2 = cmd.CreateParameter("@text", adLongVarBinary, adParamInput, m_len)
    Set p3 = cmd.CreateParameter("@checksum", adInteger, adParamInput)
    Set p4 = cmd.CreateParameter("@id", adInteger, adParamInput)
    Set p_out = cmd.CreateParameter("@id_out", adInteger, adParamOutput)
    cmd.Parameters.Append p_out
                
    p1.Value = m_name
    p2.AppendChunk m_text
    p3.Value = m_checksum
    p4.Value = m_id
    
    cmd.Execute
    InsertImage = p_out
    
    Exit Function

ERRH:
End Function


Public Function GetImageFromDatabase(adocn As ADODB.Connection, source_path As String, _
    temp_path As String) As Boolean
        
    Dim rs As New Recordset, s() As Byte
    Dim m_cn As New ADODB.Connection
    
    On Error GoTo ERRH:
    Set rs = New Recordset
    
    rs.Open "exec GetImages @name = '" & source_path & "'", adocn
    
    If Not rs.EOF Then
    
        ReDim s(rs.Fields("text").ActualSize)
        s = rs.Fields("text").GetChunk(rs.Fields("text").ActualSize)
    
        Open temp_path For Binary As # 1 
        Put # 1 , , s
        Close # 1 
        GetImageFromDatabase = True
        
    End If
    rs.Close
    Exit Function
    
ERRH:
End Function

Как вы наверное заметили, изображения удобно хранить по контрольной сумме,
и по ней же отслеживать изменения в файлах. Я успользую для этого алгоритм CRC32.
 
Вставлять новые изображения примерно следующим образом.
    
    Dim s() As Byte, CheckSum As Long
    
    Open FileName For Binary As # 1 
    ReDim s(LOF( 1 ))
    Get # 1 , , s
    Close # 1 
    CheckSum = CalcCheckSum(FileName)
    
    Call InsertImage(Connect, FileName, s, UBound(s) +  1 , CheckSum)
    
За подробностями - в мыло.

...
Рейтинг: 0 / 0
MS Sql Server , как добавить в поле Image фото ?
    #33352428
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо ... Melkiades , токо что у тебя за хранимка ...

я пока нашел такой способ

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim s As ADODB.Stream

Set s = New ADODB.Stream


s.Type = adTypeBinary
s.Open

s.LoadFromFile "c:\1.bmp"


Me.Adodc1.Recordset.AddNew

Me.Adodc1.Recordset( 1 ).Value = s.Read
Me.Adodc1.Recordset.Update

а как считывать для отображения фото на форме?
...
Рейтинг: 0 / 0
MS Sql Server , как добавить в поле Image фото ?
    #33352462
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В простейшем случае вот такие ХП:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Create        PROCEDURE InsertImage @name varchar( 255 ),@Text image, @Checksum int, @id_out int output AS

	insert into Images values(@name, @text, @Checksum)
	select @id_out =  scope_identity()

GO

Create PROCEDURE GetImages @name varchar( 255 )  AS
	
	select text from Images where Name = @name

GO

А считывать на форму банально - сохраняешь файл во временную папку (у меня - temp_path), потом делаешь LoadPicture и убиваешь этот временный файл.
...
Рейтинг: 0 / 0
MS Sql Server , как добавить в поле Image фото ?
    #33352483
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо ! если что отпишусь по мылу ... аськи нету?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MS Sql Server , как добавить в поле Image фото ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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