Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Luis Marques

[Resolvido]Erro ao guardar nome na imagem na BD

Mensagens Recomendadas

Luis Marques

Boas,

É assim eu queria guardar o nome da imagem na base de dados após a ter escolhido.

Eu tenho o código para ir procurar a imagem ao pc e guarda la numa pasta e depois guardar o nome da imagem na base de dados.

Codigo:

 Try
            Dim dialog As New OpenFileDialog
            With dialog
                .Filter = "Tipos de imagens aceites (JPEG, BMP)|*.jpg; *.bmp"
                .CheckFileExists = True
                .CheckPathExists = True
                .Multiselect = False
                .ShowDialog()

            End With

            Dim a = My.Computer.FileSystem.CurrentDirectory
            If dialog.FileName <> String.Empty Then

                Dim destino As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) & "\imagens\"
                destino = destino.Substring(6)
                If My.Computer.FileSystem.DirectoryExists(destino) = False Then
                    My.Computer.FileSystem.CreateDirectory(destino)
                End If

                destino = destino & dialog.SafeFileName
                'MsgBox(dialog.FileName)
                'MsgBox(destino)
                IO.File.Copy(dialog.FileName, destino)
                TextBox3.Text = dialog.SafeFileName

            End If
            My.Computer.FileSystem. = a
            dialog.Dispose()


            Dim lm As String = "INSERT INTO `imagem_encomenda` (`imagem`) VALUES (?)"
            MsgBox(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase))
            'Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(pap.My.Settings.ligacaoBD)

                'Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNo)
                If msg = MsgBoxResult.Yes Then


                    command.Parameters.Add("imagem", OleDbType.VarChar).Value = TextBox3.Text

                ElseIf msg = MsgBoxResult.No Then
                    TextBox3.Clear()
                End If


                ' Abre a ligação e insere o registo
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o registo na base de dados!")

                End If

            End Using

        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

e o erro é:

13435776.jpg

Se eu for buscar uma imagem ao ficheiros recebidos aparece isso no erro, se for buscar ao ambiente de trabalho já aparece ambiente de trabalho no erro,etc

Se alguem souber do que será o erro, diga me qualquer coisa


LM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
José Lopes

cá para mim..não estás a apanhar o caminho da imagem correctamente...

tanto que ele diz que o ficheiro nao existe


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pwyll

Le la a mensagem de erro como deve de ser.....

Nao estas a indicar o path correcto da base de dados, nao tem nada a ver com a imagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
esquima

Dim lm As String = "INSERT INTO `imagem_encomenda` (`imagem`) VALUES (?)"

values(?) isto tb n sei se esta correcto ..como e que ele sabe que o ? é o caminho da imagem

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Luis Marques

isso funciona porque tem mais a baixo os parâmetros, o código que eu utilizo para guardar é igual a este e até agora ainda não deu problema, até porque neste caso se eu em vez de ir la procurar uma imagem e o nome da mesma ficar na textbox, colocar la um nome qualquer, o programa vai guardar o nome que la escrevi na BD.


LM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hellblazer

isso funciona porque tem mais a baixo os parâmetros, o código que eu utilizo para guardar é igual a este e até agora ainda não deu problema, até porque neste caso se eu em vez de ir la procurar uma imagem e o nome da mesma ficar na textbox, colocar la um nome qualquer, o programa vai guardar o nome que la escrevi na BD.

Errado o que tu queres é:

... codigo ...

Dim lm As String = "INSERT INTO `imagem_encomenda` (`imagem`) VALUES (@imagem)"
            MsgBox(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase))
            'Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(pap.My.Settings.ligacaoBD)

                'Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNo)
                If msg = MsgBoxResult.Yes Then


                    command.Parameters.Add("@imagem", OleDbType.VarChar).Value = TextBox3.Text

... codigo ...


There are two ways to write error-free programs; only the third one works.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
José Lopes

errado..o problema estava mesmo na connectionstring... que estava mal definida... ele devia ter colocado aqui.....


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hellblazer

Segundo o erro que reportas-te ele nao estava a encontrar a base de dados dando então erro. peço-te então que verifiques se estou correcto ou não... verificando se ele guarda correctamente a imagem :cheesygrin:


There are two ways to write error-free programs; only the third one works.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
José Lopes

de facto ele enviou-me o projecto e ficou a funcionar com o código que ele tinha, logo que mudei a connection string... nao quer dizer que o teu código esteja errado..mas o dele também estava  a gravar correctamente


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.