1
resposta

ERRO

Estou criando um PDV de Vendas em C#. 

Conectei o banco com MYSQL e ao tentar salvar na tela de cadastro de funciorario, está dando erro. Poderiam me ajudar por favor? Acabei empacando e nao encontro de jeito nenhum.

ESTE É O ERRO : MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'curDate(), foto) VALUES('FERNANDA', 'DEV', '3333333', '333333333', 'RUA DAS G...' at line 1'

ESTE É O CÓDIGO

using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO;

namespace PDV_SISTEM2.cadastro { public partial class FrmFuncionarios : Form { //variaveis estão sendo criadas nessa classe pq a mesma é public Conexao con = new Conexao(); string sql; MySqlCommand cmd; String foto;

    public object FileAcess { get; private set; }

    public FrmFuncionarios()
    {
        InitializeComponent();
    }


    private void bntNovo_Click(object sender, EventArgs e)
    {

    }


    private void btnSalvar_Click(object sender, EventArgs e)
    {
       // busca todo o poder da classe conexao. A mesma foi inserida no primeiro metodo pq é public.
        con.AbrirConexao();
        sql = "INSERT INTO funcionarios(nome, cargo, cpf, telefone, endereco, curDate(), foto) VALUES(@nome, @cargo, @cpf, @telefone, @endereco, curDate(), @foto)";
        cmd = new MySqlCommand(sql, con.con);
        // jogar dados digitados nos tx no banco, onde cmd ´q é a variavel, Parameters = Parametro a ser salvo no campo, AddWithValue = Adicionar com Valor que é o nome da propriedade:
        cmd.Parameters.AddWithValue("@nome", txtNome.Text);
        cmd.Parameters.AddWithValue("@cargo", cbCargo.Text);
        cmd.Parameters.AddWithValue("@cpf", txtCpf.Text);
        cmd.Parameters.AddWithValue("@telefone", txtTel.Text);
        cmd.Parameters.AddWithValue("@endereco", txtEnd.Text);
        cmd.Parameters.AddWithValue("@foto",img());  //img () é o metodo criado p/ tratar a img no banco

        cmd.ExecuteNonQuery();
        con.FecharConexao();
    }

    private void btnimg_Click(object sender, EventArgs e)
    {
        OpenFileDialog dialog = new OpenFileDialog();
        dialog.Filter = "Imagens (*.jpg; *.png) | *.jpg;*.png";  // mostra jpg e png
        if (dialog.ShowDialog() ==DialogResult.OK)
        {
            foto = dialog.FileName.ToString(); // pegando o caminho da imagem q selecionei e dei ok
            image.ImageLocation = foto; // jogando caminho da imagem p/ componete img p/ exibir no form
            //alterouImagem = "sim"; //p uso editar ou alterar imagem

        }
    }

    private byte[] img() //este metodo é padão, serve sempre que deseja enviar uma imagem para o banco de dados
    {
        byte[] imagem_byte = null; // essa é usada p enviar o comprimento da imagem
        if (foto =="") // a string foto, nunca vai vira vazia
        {
            return null;
        }

        //usar o FileStream p enviar imagem p o Banco e tres parametros local (foto), tipo de imagem (fileMode), tipo de acesso (File Acess) 
        FileStream fs = new FileStream(foto, FileMode.Open, FileAccess.Read); //Caminho da foto , tipo do arquivo (abre o tipo do arquei), acesso do arquivo

        BinaryReader br = new BinaryReader(fs); //Serve para receber todo o FileStream

        imagem_byte = br.ReadBytes((int)fs.Length); //pegando o comprimento do File Stream e jogando dentro de uma tipo Imagem Byte

        return imagem_byte;
    }

    private void LimparFoto()
    {

        image.Image = Properties.Resources.semfoto1;//aqui coloca a imagem sem foto considerando a picture incluida no form
        foto = "images/semfoto1.jpg";

}

}

1 resposta

Oi, Fernanda.

Aqui está o erro "funcionarios(nome, cargo, cpf, telefone, endereco, curDate(), foto)"

O nome do campo não é "curDate()"

Verifique o nome correto