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";
}
}