我的代码需要保存WinForm Vendita中捕获的所有信息。 我正在使用以下代码,但它不会将信息保存在数据库中,并且会在标准表达式中显示错误,指示数据类型不匹配。
我使用以下代码:
System.Data.OleDb.OleDbCommand cmd1 = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbCommand cmd2 = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbCommand cmd3 = new System.Data.OleDb.OleDbCommand();
cmd1.CommandType = System.Data.CommandType.Text;
cmd2.CommandType = System.Data.CommandType.Text;
cmd1.CommandText = "INSERT INTO FattureVoci ([IDVoce],[CodiceArticolo],[Descrizione],[Quantita],[PrezzoUnitario]) VALUES (@Id,@Prod,@Descr,@Qta,@Prezzo)";
cmd2.CommandText = "INSERT INTO Fatture ([Intestatario],[PartitaIVA]) VALUES (@Intest,@Iva)";
cmd1.Parameters.AddWithValue("@Prod", this.Prodotto.Text);
cmd1.Parameters.AddWithValue("@Iva", Convert.ToInt32(this.PartitaIVA.Text));
cmd1.Parameters.AddWithValue("@Descr", this.Descrizione.Text);
cmd1.Parameters.AddWithValue("@Qta", Convert.ToInt32(this.Qta.Text));
cmd1.Parameters.AddWithValue("@Intest", this.Intestatario.Text);
cmd1.Parameters.AddWithValue("@Id", Convert.ToInt32(this.id.Text));
cmd1.Parameters.AddWithValue("@Prezzo", Convert.ToInt32(this.Prezzo.Text));
cmd1.Connection = conn;
conn.Open();
cmd1.ExecuteNonQuery();
cmd2.ExecuteNonQuery();
conn.Close();
}
答案 0 :(得分:2)
Iva
和Interest
属于cmd2
而非cmd1
。改变这个:
cmd1.Parameters.AddWithValue("@Iva", Convert.ToInt32(this.PartitaIVA.Text));
cmd1.Parameters.AddWithValue("@Intest", this.Intestatario.Text);
要:
cmd2.Parameters.AddWithValue("@Iva", Convert.ToInt32(this.PartitaIVA.Text));
cmd2.Parameters.AddWithValue("@Intest", this.Intestatario.Text);
此外,您使用的是OleDb,所以可能是Ms:您应该以正确的顺序提供参数。