• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

j.mendes24

inserir iagem em base de dados feita em sql

5 mensagens neste tópico

bem pessoal, eu fiz uma base de dados atraves do vb.net em sql.

dentro dessa base de dados fiz uma tabela que é a tabela_imagens.

na tabela_imagens os campos sao: cod_imagem (int), imagem_verdadeira (image), imagem_falsa (imagem), sair (bit).

na tabela nenhum campo permite ser NULL.

eu gostava de saber como e que poderia introduzir as imagens na tabela, é que nao sei como é.

eu pesquisei, e encontrei um codigo para introduzir as imagens atraves de um formulário, mas com este codigo ele nao guarda nada na base de dados.  :wallbash:

codigo:

Public Class form_inserir_imagens
    Dim openFD = New OpenFileDialog

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Define a Connection String

        Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\bd_find_the_differences.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

        Try
            ' Cria um novo FileStream para leitura da imagem
            Dim fs As New IO.FileStream("c:\image.jpg", IO.FileMode.Open, IO.FileAccess.Read)
            ' Cria um array de Bytes do tamanho do FileStream 
            Dim ImageData(fs.Length() - 1) As Byte
            ' Lê os bytes do FileStream para o array criado
            fs.Read(ImageData, 0, ImageData.Length)
            ' Fecha o FileStream ficando a imagem guardada no array
            fs.Close()

            Using connection As New SqlClient.SqlConnection(myConnectionString)

                ' Define o commando Transact-SQL para inserir dados
                Dim SQL As String = "INSERT INTO tabela_imagens ([cod_imagem],[imagem_verdadeira],[imagem_falsa],[sair]) VALUES (@cod,@img1,@img2,@sair);"
                Dim command As New SqlClient.SqlCommand(Sql, connection)
                ' Define os parametros para a inserção de dados, onde está o array 
                ' de bytes(imagem) a ser inserida. O tipo do campo é Image
                command.Parameters.Add("@cod", SqlDbType.Int).Value = CInt(ProxCod.Text)
                command.Parameters.Add("@img1", SqlDbType.Image).Value = ImageData
                command.Parameters.Add("@img2", SqlDbType.Image).Value = ImageData
                command.Parameters.Add("@sair", SqlDbType.Bit).Value = 0
                connection.Open()
                ' Insere os campos no SQL
                command.ExecuteNonQuery()
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Private Sub form_inserir_imagens_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim strFileName As String

        openFD.InitialDirectory = "C:\"

        openFD.Title = "Add A Display Picture"
        openFD.Filter = "JPEGS|*.jpg|GIFS|*.gif|Bitmaps|*.bmp"
        Dim DidWork As Integer = openFD.ShowDialog()

        If DidWork = DialogResult.OK Then
            strFileName = openFD.FileName
            PB1.Image = Image.FromFile(strFileName)
            openFD.Reset()
        End If

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim strFileName As String

        openFD.InitialDirectory = "C:\"

        openFD.Title = "Add A Display Picture"
        openFD.Filter = "JPEGS|*.jpg|GIFS|*.gif|Bitmaps|*.bmp"
        Dim DidWork As Integer = openFD.ShowDialog()

        If DidWork = DialogResult.OK Then
            strFileName = openFD.FileName
            PB2.Image = Image.FromFile(strFileName)
            openFD.Reset()
        End If
    End Sub
End Class

alguem podiame ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao da erro, ele passa por todas as linhas de codigo sem nenhum erro,

mas depois quando vou verificar na base de dados, ela está totalmente fazia. :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hum, não sei com sql server isto também acontece, mas não estarás a criar uma bd nova cada vez que compilas/corres o teu programa?

Adicionaste a bd ao projecto? Se adicionaste, vê como tens a propriedade Copy to Output.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora