punzi Posted April 19, 2012 at 09:16 PM Report #450062 Posted April 19, 2012 at 09:16 PM Boas pessoal venho cá desta vez porque estou com um grande problema: É o seguinte: Sempre que na textbox coloco um numero double (ex:12.4) e tento colocar na base de dados em acess ele coloca mas no formato 124. Mas se puser com ',' o programa nao me deixa inserir dados, dando me este erro: O codigo que tenho para inserir os dados na tabela é: try { string drink = string.Format("insert into Tabela_Bebidas values({0},'{1}',{2},{3})", int.Parse(Cod.Text.ToString()), Nome.Text, decimal.Parse(Preço.Text.ToString()), int.Parse(Quantidade.Text.ToString())); OleDbCommand ordem = new OleDbCommand(drink, vcon); ordem.ExecuteNonQuery(); MessageBox.Show("Dados inseridos com sucesso"); ordem.Dispose(); } catch { MessageBox.Show("Erro!Não foi possivel inserir dados"); } alguem me consegue ajudar a resolver este quebra cabeças?! P.S - No access o campo 'Preço' esta definido como 'Duplo' e Casas decimais : 'Automatico'
bruno1234 Posted April 19, 2012 at 09:25 PM Report #450064 Posted April 19, 2012 at 09:25 PM O problema tem a ver com o formato do numero decimal, tu tens um ponto, e provavelmente a base de dados usa uma virgula. O que deves fazer é substituir a utilização do string.format para juntar parametros por querys com parametros. Podes ver exemplos na net: http://www.dotnetperls.com/sqlparameter (O exemplo é SQL Server, mas a lógica para outra base de dados é igual) Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
punzi Posted April 19, 2012 at 10:33 PM Author Report #450072 Posted April 19, 2012 at 10:33 PM mesmo assim eu fiz como lá diz e da me erro, o codigo segue a seguir: OleDbConnection vconnection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ze Nuno\Desktop\Database11.accdb"); private void Form1_Load(object sender, EventArgs e) { vconnection.Open(); } private void button1_Click(object sender, EventArgs e) { string sql = "insert into Teste (Codigo,Nome,Altura) values (@Nome,@Nome,@Altura)"; OleDbCommand co = new OleDbCommand(sql,vconnection); co.Parameters.Add(new OleDbParameter("@Codigo",int.Parse(textBox1.Text.ToString()))); co.Parameters.Add(new OleDbParameter("@Nome", textBox2.Text)); co.Parameters.Add(new OleDbParameter("@Altura", double.Parse(textBox3.Text.ToString()))); co.ExecuteNonQuery(); } private void button2_Click(object sender, EventArgs e) { vconnection.Close(); }
bruno1234 Posted April 20, 2012 at 06:32 PM Report #450269 Posted April 20, 2012 at 06:32 PM No teu insert estás a por o Nome duas vezes. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now