Jump to content

Erro no INSERT INTO


Go to solution Solved by D3POD,

Recommended Posts

Posted

Boas, estou com um erro num programa que estou a criar e precisava da vossa ajuda.

con = new OleDbConnection(conn);
                con.Open();
                string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ('" + cmbProductName.Text + "','" + txtFeatures.Text + "'," + txtPrice.Text + ",@d1, @margem, @preco_custo, @tax, @preco_stax";
                cmd = new OleDbCommand(cb);
                cmd.Connection = con;
                MemoryStream ms = new MemoryStream();
                Bitmap bmpImage = new Bitmap(pictureBox1.Image);
                bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] data = ms.GetBuffer();
                OleDbParameter p = new OleDbParameter("@d1", OleDbType.VarBinary);
                cmd.Parameters.AddWithValue("@margem", Convert.ToInt32(txt_margem.Text));
                cmd.Parameters.AddWithValue("@preco_custo", Convert.ToInt32(txt_pricecoust.Text));
                cmd.Parameters.AddWithValue("@tax", Convert.ToInt32(txt_tax.Text));
                cmd.Parameters.AddWithValue("@preco_stax", Convert.ToInt32(txt_pricewithouttax.Text));
            p.Value = data;
                cmd.Parameters.Add(p);
                cmd.ExecuteNonQuery();
                con.Close();

Sempre que clico no botão para guardar ele dá me erro no INSERT INTO... já fiz várias experiencias, como colocar as textboxs diretamente na query, mas mesmo assim nada.
O problema é que se eu retirar os @margem, @preco_custo, @tax e @preco_stax o programa funciona bem... portanto leva-me a crer que seja alguma coisa aqui.

 

Cumprimentos

Posted

Bom dia,

Creio que o problema possa estar na conversão de tipos de dados.

Experimenta usar o Int32.TryParse() em vez do Convert.ToInt32 e usa breakpoints para verificares se os tipos de dados estão correctos, ou também podes verificar isso no código, algo tipo:

bool res = int.TryParse(txt_pricecoust.Text, out num1);
	if (res == false)
	{
	    MessageBox.Show("não é um numero", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk)
	}

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Realmente quando abri o tópico ainda não tinha reparado, mas já corrigi...

Entretanto fiz algumas alterações... mudei os campos da base de dados para texto de forma a evitar conversões e perceber onde está o problema, mas sem sucesso.

 

Segue o erro:

Citação

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Additional information: Data type mismatch in criteria expression.

Código atual:

 con = new OleDbConnection(conn);
                con.Open();
                string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ('" + cmbProductName.Text + "','" + txtFeatures.Text + "'," + txtPrice.Text + ",@d1, @margem, @preco_custo, @tax, @preco_stax)";
                cmd = new OleDbCommand(cb);
                cmd.Connection = con;
                MemoryStream ms = new MemoryStream();
                Bitmap bmpImage = new Bitmap(pictureBox1.Image);
                bmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] data = ms.GetBuffer();
                OleDbParameter p = new OleDbParameter("@d1", OleDbType.VarBinary);

                cmd.Parameters.Add("@margem", OleDbType.VarChar).Value = txt_margem.Text;
                cmd.Parameters.Add("@preco_custo", OleDbType.VarChar).Value = txt_pricecoust.Text;
                cmd.Parameters.Add("@tax", OleDbType.VarChar).Value = txt_tax.Text;
                cmd.Parameters.Add("@preco_stax", OleDbType.VarChar).Value = txt_pricewithouttax.Text;
                p.Value = data;
                cmd.Parameters.Add(p);
                cmd.ExecuteNonQuery();
                con.Close();
Posted

Boa tarde,

Experimenta assim a query:

string cb = "insert into Config(ProductName,Features,Price,Picture, Margin, CostPrice, Tax, Price1) VALUES ("'" + cmbProductName.Text + "', '" + txtFeatures.Text + "', '" + txtPrice.Text + "', " + @d1, @margem, @preco_custo, @tax, @preco_stax );"

Fiquei com a ideia que possa ser uma questão de aspas e plicas, que não estavam correctas.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

  • Solution
Posted

Boas, já descobri o que estava mal e não tinha nada a ver com o código.

O problema estava na base de dados que estava como Texto Breve.

Quero agradecer a todos pela ajuda, serviu de qualquer das maneira para compreender melhor como funcionam as query e as várias formas que posso criar.

 

Cumprimentos

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.