Salvando caminho de arquivo no MySQL – c# sql .net

Pergunta:


Estou tendo dificuldade ao salvar endereço de arquivo no banco de dados. Ao salvar o endereço no banco ele esta adicionando a quantidade de vezes que utilizei o OpenFileDialog para salvar um arquivo.

Salva o endereço sempre assim C:UsersphiliDesktopPDF_SGIM_QUALIDADE_CNHcertificadocalibracao.pdf12

Sempre coloca um numeral depois da extensão.

Porque está acontecendo isso?

private void tsbtnGravar_Click(object sender, EventArgs e)
        {

            try
            {
                if (identificacaoTextBox.Text == "")
                {
                    MessageBox.Show("Informe a Identificação do Instrumento.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    identificacaoTextBox.Focus();
                }

                else if (descricaoTextBox.Text == "")
                {
                    MessageBox.Show("Informe s Descrição do Instrumento.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    descricaoTextBox.Focus();
                }

                else
                {
                    if (status == "novo")
                    {
                        cmd.CommandText = "INSERT INTO tb_Intrumento (identificacao,Descricao,Marca, Modelo,Serial,Capacidade,Frequencia,Data_Calibracao,Vencimento_Calibrecao,Certificado) VALUES('" + identificacaoTextBox.Text + "','" + descricaoTextBox.Text + "','" + marcaTextBox.Text + "','" + modeloTextBox.Text + "','" + txb_Numero_Serie.Text + "','" + capacidadeTextBox.Text + "','" + tcb_Frequencia_Calibracao.Text + "','" + txb_Data_Calibracao.Text + "','" + txb_Vencimento_Calibracao.Text + "','" + txb_caminho.Text + "','" +
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();
                        MessageBox.Show("Registro salvo com sucesso.", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                    else if (status == "editar")
                    {
                        cmd.CommandText = "INSERT INTO tb_Instrumento SET Identificacao='" + identificacaoTextBox.Text + "',  Descricao='" + descricaoTextBox.Text + "',Marca='" + marcaTextBox.Text + "', Modelo='" + modeloTextBox.Text + "', Serie='" + txb_Numero_Serie.Text + "', Capacidade='" + capacidadeTextBox.Text + "', Frequencia='" + tcb_Frequencia_Calibracao.Text + "', Data_Calibracao='" + txb_Data_Calibracao.Text + "', Vencimento_Calibracao='" + txb_Vencimento_Calibracao.Text + "', Certificado='"  + txb_caminho.Text +
                             lstvInstrumentos.Items[lstvInstrumentos.FocusedItem.Index].Text + "'";
                        cmd.ExecuteNonQuery();
                        MessageBox.Show("Registro atualizado com sucesso.", "Atualizar", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    carregaVariaveis();
                    btn_Limpar_Dados.PerformClick();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

Abaixo segue código que insere o caminho no textbox:

private void btn_Carregar_Certificado_Click(object sender, EventArgs e)
        {

            OpenFileDialog abrir = new OpenFileDialog();
            abrir.ShowDialog();

           // openFileDialog1.ShowDialog();
            txb_caminho.Text = abrir.FileName.Replace(@"", @"\");
        }

Autor da pergunta Philipe Said

Resposta Daniel Dutra:

O cmd.CommandText do if (status == "novo") está concatenando a próxima linha junto com a query.
Sendo que a próxima linha é o cmd.ExecuteNonQuery();, que retorna o Id do insert que ela acabou de realizar.

Portanto basta colocar um ; depois da do txb_caminho.Text ao invés de como está agora: _Calibracao.Text + "','" + txb_caminho.Text + "','" +.

Faça a query de forma segura e o problema vai se resolver:

var cmd = new SqlCommand("INSERT INTO tb_Instrumento SET Identificacao = @Identificao, Descricao = @Descricao, ... aqui vai colocar todos os campos ..., Certificado = @Certificado, ... pode ter outros aqui", connection);

cmd.Parameters["@Identificacao"].Value = identificacaoTextBox.Text;
cmd.Parameters["@Descricao"].Value = descricaoTextBox.Text;
... todos os parâmetros aqui
cmd.Parameters["@Certificado"].Value = txb_caminho.Text;

O código do jeito que está não está só errado, tem sérios problemas de segurança.

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *