PHP Warning: Missing argument 3 for vB_BbCodeParser::handle_bbcode_spoiler(), called in ..../includes/class_bbcode.php on line 1158 and defined in ..../includes/class_bbcode.php on line 2662

PHP Warning: Missing argument 3 for vB_BbCodeParser::handle_bbcode_spoiler(), called in ..../includes/class_bbcode.php on line 1158 and defined in ..../includes/class_bbcode.php on line 2662
Загрузка картинок в базу данных - Visual Basic .NET - Киберфорум
Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
comma
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 23
#1

Загрузка картинок в базу данных - Visual Basic .NET

05.08.2012, 11:46. Просмотров 3230. Ответов 21
Метки нет (Все метки)

скажите пожалуйста как загружать картинки в базу дааных но без ссылки в vb.net 10 кто знает пусть откликнется плииииииз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2012, 11:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка картинок в базу данных (Visual Basic .NET):

Загрузка изображения в базу данных Access
Здравствуйте. Подскажите, как реализовывается добавление изображения в базу...

Загрузка картинки из PictureBox в базу данных
Здравствуйте. Необходимо загрузить картинку из PictureBox в базу данных,. Как...

Загрузка картинок, формул в Rich TextBox с последующим сохранением WORD
Загрузка картинок, формул в Rich TextBox с последующим сохранением WORD....

Загрузка картинок по очереди при движении мыши с зажатой левой кнопкой
При помощи HScrollBar можно самостоятельно перелистывать с разной скоростью 50...

Загрузка картинок в программу при ее запуске: Можно ли избежать "торможения"?
У меня появилась проблема. При использовании Me.PictureBox.Load("") программа...

Дабавление данных из файла в базу данных Access
Здравствуйте! При передаче данных из файла tpo1.txt в базу данных sst.mdb...

21
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
05.08.2012, 14:53 #2
А как ты их хочешь из базы извлекать? И как отображать?
0
Alex77755
10696 / 3271 / 543
Регистрация: 13.02.2009
Сообщений: 9,649
05.08.2012, 14:58 #3
в vb.net 10
Не пойму.. Знаешь же что Net, а всё равно постишь тут.

Почему-то не работает "цитата"
0
mekke
1 / 1 / 0
Регистрация: 09.08.2012
Сообщений: 9
09.08.2012, 13:20 #4
хочу загрузить картинки в базу (vb.net 10) у меня на форме 2 кнопки (одна открывая каталог выбирает картьинку а другая сохраняет в базе) и picturebox(для отображения картинки) 1-ая кнопка работает а вторая нет вот код:
vb.net
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 Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            TextBox1.Text = Path.GetFullPath(OpenFileDialog1.FileName)
            PictureBox1.ImageLocation = TextBox1.Text
        End If
    End Sub
    'byte[] convertTobyte(string soursePath)
    Private Sub convertTobyte(ByVal soursePath As String)
        ' FileInfo(finfo = New FileInfo(soursePath))
        Dim finfo As FileInfo
        finfo = New FileInfo(soursePath)
        Dim sizebyte As Integer
        sizebyte = finfo.Length
        Dim fs As FileStream
        fs = New FileStream(soursePath, FileMode.Open, FileAccess.Read)
        Dim br As BinaryReader
        br = New BinaryReader(fs)
        Dim data() As Byte
        data = br.ReadBytes(soursePath)
 
        Return
 
    End Sub
 
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' Try
        connection.Open()
        Dim dt As DataTable
        dt = New DataTable
        Dim da As SqlDataAdapter
        da = New SqlDataAdapter(" select* from MyTable", connection)
        da.Fill(dt)
        Dim r As DataRow
        r = dt.NewRow
        r(1) = Convert.ToByte(TextBox1.Text)
        dt.Rows.Add(r)
        Dim cb As SqlCommandBuilder
        cb = New SqlCommandBuilder(da)
        da.Update(dt)
        connection.Close()
        '  Catch ex As Exception
        ' MessageBox.Show(ex.ToString)
        '  End Try
    End Sub
1
PAnT0P
1019 / 543 / 106
Регистрация: 26.03.2012
Сообщений: 986
09.08.2012, 13:55 #5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от comma Посмотреть сообщение
скажите пожалуйста как загружать картинки в базу дааных
Кодируешь рисунок в Base64 и сохраняешь в базе как обычный текст.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Public Function BitmapFromBase64(ByVal Base64 As String) As System.Drawing.Bitmap
        Dim Memory As New System.IO.MemoryStream(Convert.FromBase64String(Base64))
        BitmapFromBase64 = New System.Drawing.Bitmap(Memory)
        Memory.Close()
        Memory = Nothing
    End Function
 
    Public Function BitmapToBase64(ByVal Picture As System.Drawing.Bitmap) As String
        Dim Memory As New System.IO.MemoryStream()
        Picture.Save(Memory, Imaging.ImageFormat.Png)
        BitmapToBase64 = System.Convert.ToBase64String(Memory.ToArray, Base64FormattingOptions.InsertLineBreaks)
        Memory.Close()
        Memory = Nothing
    End Function
1
Юпатов Дмитрий
1612 / 1124 / 224
Регистрация: 23.12.2010
Сообщений: 1,495
09.08.2012, 15:12 #6
Ну первая кнопка у тебя не просто позволяет выбрать файл, но и пишет его содержимое в массив байт (data). Так вот переменную data объяви на уровне модуля (чтоб она была видна и для процедуры во второй кнопке. А во второй кнопке надо выполнять запрос INSERT (вставка строки в таблицу) и в нужное поле передавать содержимое этого массива!
Так же, как бы ты добавлял в поле таблицы обычный текст, просто тип поля должен быть соответствующий.

А использовать Base64 в данном случае - это значит, знать толк в извращениях. Ведь кроме всего прочего, такое кодирование бинарника в текст вызовет увеличение размера хранимых данных (до 40% запросто)
1
Pe4eNEG
111 / 111 / 11
Регистрация: 12.06.2010
Сообщений: 486
Записей в блоге: 2
10.08.2012, 01:07 #7
По-моему хранить в базе картинки глупо) гораздо лучше хранить ссылки на эти изображения, который пусть уж тогда находятся где нибудь на сервере
0
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
10.08.2012, 19:22 #8
Не глупо... Если все в базе - переносить проще.
1
kres
72 / 39 / 3
Регистрация: 07.02.2010
Сообщений: 72
11.08.2012, 11:43 #9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'запись бинарных данных в бд ничем не отличается от записи, ну скажем, строки
dim imgURL As String
Dim Client As New Net.WebClient
Dim oJPG As Byte()
oJPG = Client.DownloadData(imgURL) '-picture
'твоя картинка в виде байтового массива (способ ее туда загнать - на твой вкус, в моем примере читается из интернета)
 
 
'собственно запись в БД, тип поля JPG - blob (binary)
Dim SqlStr As String = "select first 1 * from CONTENT"
Dim tab_result As New ADODB.Recordset
        With tab_result
            .Open(SqlStr, db_fb, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic)
            .AddNew()
            .Fields("JPG").Value = oJPG
            .UpdateBatch()
            .Close()
        End With
чтение - аналогично: содержимое поля в массив, а там делай с ним что хочешь, хочешь в пиктуребокс выводи, хочешь в файл пиши
1
Edgar4
4 / 4 / 8
Регистрация: 11.11.2014
Сообщений: 214
28.11.2014, 12:20 #10
PAnT0P, Код отлично работает!
Кодируешь рисунок в Base64 и сохраняешь в базе как обычный текст.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function BitmapFromBase64(ByVal Base64 As String) As System.Drawing.Bitmap
        Dim Memory As New System.IO.MemoryStream(Convert.FromBase64String(Base64))
        BitmapFromBase64 = New System.Drawing.Bitmap(Memory)
        Memory.Close()
        Memory = Nothing
    End Function
 
    Public Function BitmapToBase64(ByVal Picture As System.Drawing.Bitmap) As String
        Dim Memory As New System.IO.MemoryStream()
        Picture.Save(Memory, Imaging.ImageFormat.Png)
        BitmapToBase64 = System.Convert.ToBase64String(Memory.ToArray, Base64FormattingOptions.InsertLineBreaks)
        Memory.Close()
        Memory = Nothing
    End Function
Но как полученный текст сохранить в БД Access, если размер текстового поля не должен превышать 255?
0
PAnT0P
1019 / 543 / 106
Регистрация: 26.03.2012
Сообщений: 986
17.12.2014, 09:56 #11
Использовать memo поля (специальный тип поля для примечаний)
0
ivanes
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 13
14.10.2017, 01:26 #12
Кодирование в базу не сохраняет даже если используешь поле memo

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
        Dim фото As String
        фото = BitmapToBase64(PictureBox1.Image)
 
        Dim conn As OleDbConnection
        conn = New OleDbConnection
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Calculator\Demo.mdb;Persist Security Info=False;"
        conn.Open()
 
        Dim c As New OleDbCommand
        c.Connection = conn
        c.CommandText = "insert into Таблица1(фото) values ('" & фото & "')"
        c.ExecuteNonQuery()
Ругается на:
Необработанное исключение типа "System.Data.OleDb.OleDbException" в System.Data.dll
Дополнительные сведения: Слишком сложный запрос.
фото .JPG

на все форматы ругается кроме двух bmp и ico но в этих форматах изображение не какое.
0
XIST
1032 / 761 / 107
Регистрация: 01.10.2009
Сообщений: 2,357
Записей в блоге: 1
14.10.2017, 10:29 #13
Цитата Сообщение от ivanes Посмотреть сообщение
Таблица1(фото)
что за? вот и ругается

Добавлено через 15 минут
я про пробел если что
0
Юпатов Дмитрий
1612 / 1124 / 224
Регистрация: 23.12.2010
Сообщений: 1,495
14.10.2017, 10:29 #14
Некрофил, однако.
Не нужно в строку перегонять данные. Base64 может увеличить объем данных на 30-40 процентов против оригинала. Оно тебе надо? Плюс расход ресурса на шифрование/дешифрование.
Читай из файла данные в бинарный массив и потом его суй запросом в поле таблицы БД типа "image"
тут еще глянь http://www.cyberforum.ru/vb-net/thread335156.html
а тут типы полей https://support.office.com/ru-ru/art...ID=HA001231504

Только не злоупотребляй с размером файла (ага, можно любые файлы так в БД пихать) - все же Аксесс это не SQL server
0
ivanes
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 13
14.10.2017, 22:17 #15
Приветствую
Таблица1(фото) ставлю пробел не помогает.
Решил запихнуть строку в текст бокс посмотреть какая затем скопировал и добавил в базу Access 2007
строка поместилась но не считывается тоже разуется

Добавлено через 5 минут
при записи
vb.net
1
2
3
4
5
6
7
8
9
  Dim conn As OleDbConnection
        conn = New OleDbConnection
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Calculator\Иван.mdb;Persist Security Info=False;"
        conn.Open()
 
        Dim c As New OleDbCommand
        c.Connection = conn
        c.CommandText = "insert into Таблица1 (фото) values ('" & TextBox1.Text & "')"
        c.ExecuteNonQuery()
Ругается на c.ExecuteNonQuery()
Дополнительные сведения: Слишком сложный запрос.
0
XIST
1032 / 761 / 107
Регистрация: 01.10.2009
Сообщений: 2,357
Записей в блоге: 1
15.10.2017, 11:18 #16
ivanes, а в
Код
TextBox1
что? Что тут гадать на кофе, выкидывайте проект
0
ivanes
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 13
15.10.2017, 22:33 #17
У меня нет проекта просто смотрю коды разбираю их самообразовываюсь.
как сохранит картинку в базу access нашел на просторах интернета следующий пример у меня заработало.
Модуль
vb.net
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
Imports System.Data.OleDb
Module Module1
    Public acsconn As New OleDbConnection
    Public acsdr As OleDbDataReader
    Public acsda As New OleDbDataAdapter
    Public acscmd As New OleDbCommand
    Public strsql As String
    Public acsds As New DataSet
 
    Public Sub connect()
        Try
            acsconn.ConnectionString = "provider=microsoft.jet.oledb.4.0; data source=|datadirectory|\Database.mdb;"
            acsconn.Open()
            If acsconn.State = ConnectionState.Open Then
                MsgBox("Connected")
            Else
                MsgBox("Error")
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
 
End Module
код формы
vb.net
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
Imports System.IO
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        connect()
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        OpenFileDialog1.Filter = "image file (*.jpg, *.bmp, *.png) | *.jpg; *.bmp; *.png| all files (*.*) | *,*"
        If OpenFileDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
            PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
        End If
    End Sub
 
    Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        If OpenFileDialog1.FileName <> Nothing Or OpenFileDialog1.FileName <> "" Then
            txtname.Text = OpenFileDialog1.FileName.Substring(
            OpenFileDialog1.FileName.LastIndexOf("") + 1,
            (OpenFileDialog1.FileName.IndexOf(".", 0) - (OpenFileDialog1.FileName.LastIndexOf("") + 1)))
        End If
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        '    Try
        Dim fsreader As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
        Dim breader As New BinaryReader(fsreader)
        Dim imgbuffer(fsreader.Length) As Byte
        breader.Read(imgbuffer, 0, fsreader.Length)
 
        fsreader.Close()
        strsql = "insert into picture (picturename, picturefile) values (@dtaname, @dtafile)"
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acscmd.Parameters.AddWithValue("@dtaname", txtname.Text)
        acscmd.Parameters.AddWithValue("@dtafile", imgbuffer)
        acscmd.ExecuteNonQuery()
        acscmd.Dispose()
        MsgBox("Saved")
 
        ' Catch ex As Exception
 
        '  End Try
    End Sub
End Class
базу кладу в папку Debug:
Visual Studio 2015\Projects\WindowsApplication1\WindowsApplication1\bin\Debug
в базе 3 поля
1 Код - счетчик
2 picturename - текст -для имени кортинки
3 picturefile - Поле объекта OLE - для записи двоичного кода фото

имя TextBox1 переименовано в txtname
при создании базы сохранял ее как Access 2002-2003 на 2007 еще не пробовал.

Добавлено через 31 минуту
Добавил еще кнопку на форму для загрузки картинки из базы
Кликните здесь для просмотра всего текста


Код =1 так как в таблице сделана только одна запись
1
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,899
Завершенные тесты: 1
17.10.2017, 17:57 #18
ivanes, что вы привязались к этому Base64... Пишите бинарные данные, лучше всего через параметры... есть куча прммеров н форуме.
0
Юпатов Дмитрий
1612 / 1124 / 224
Регистрация: 23.12.2010
Сообщений: 1,495
18.10.2017, 09:52 #19
как вариант, вот кусок из проекта:
Кликните здесь для просмотра всего текста

вот как-то так... запрос в примере длинный с кучей параметров, но тут уж сам себе ковыряй, что там нужно. Да! поле в таблице БД по имени File_content у меня имеет тип varbinary(max) - это аналог аксесовского типа image для ms sql server. Т.е. при использовании БД аксеса ты делаешь тип поля image (только как это называется в визуальном конструкторе таблиц аксеса - я х.з.... формировать можно таблицу и sql запросом, а не в конструкторе). Ну и совсем немного синтаксис запроса может отличаться в аксесе и mssqlserv.
2
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,899
Завершенные тесты: 1
18.10.2017, 17:18 #20
Юпатов Дмитрий, тут конечно можно читать файл проще: IO.File.ReadAllBytes() и получим тот же массив байтов для передачи в базу.
0
18.10.2017, 17:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2017, 17:18
Привет! Вот еще темы с решениями:

Запись данных из TextBox в базу данных
Делаю регистрацию в базе данных, нужно что бы данные введенные пользователем в...

Не сохраняет базу данных
Dim sql1 As String = &quot;Insert into Платежное_поручение(Номер, Вид,...

Не отправляется запрос в базу данных
Вот код: Dim dm As New dbDataSet 'dbDataSet - это база...

Открыть базу данных с паролем
Dim DS As String = Application.StartupPath &amp; &quot;MyBase\BD.accdb&quot; Dim Con As New...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru