我的数据库(Echipa和Staff)中有2个与关系连接的表。
要在我的表格中添加一行,我只需添加第一行,然后添加第二行
private void AddElement(string nume, string an, string tara, string antrenor, string presedinte, string actionar)
{
conexiune.Open();
Comanda comanda = new Comanda("insert into echipa values( @nume, @an,@tara)", conexiune);
comanda.Parameters.Add(new SqlParameter("@nume", nume));
comanda.Parameters.Add(new SqlParameter("@an", an));
comanda.Parameters.Add(new SqlParameter("@tara", tara));
comanda.ExecuteNonQuery();
comanda = new Comanda("insert into staff values( @antrenor,@presedinte,@actionar)", conexiune);
comanda.Parameters.Add(new SqlParameter("@antrenor", antrenor));
comanda.Parameters.Add(new SqlParameter("@presedinte", presedinte));
comanda.Parameters.Add(new SqlParameter("@actionar", actionar));
comanda.ExecuteNonQuery();
conexiune.Close();
MessageBox.Show("Succes");
}
但是如果我想从两者中删除一行来更新一行呢? 我该怎么办?
我不知道为什么,但我甚至无法从1张表中删除
private void DeleteElement(string nume)
{
conexiune.Open();
Comanda comanda = new Comanda("delete from echipa where 'nume'=@nume", conexiune);
comanda.Parameters.Add(new SqlParameter("@nume", nume));
comanda.ExecuteNonQuery();
conexiune.Close();
MessageBox.Show("Succes");
}
这对我的桌子不起作用..
答案 0 :(得分:3)
最好的方法是在两个表之间的外键上设置级联删除。这样,当您从主表中删除行时,第二个表中的所有子行都将被自动删除。
答案 1 :(得分:2)
试试这个。在" echipa"。
之后定义列conexiune.Open();
Comanda comanda = new Comanda("insert into echipa(nume, an, tara) values( @nume, @an,@tara)", conexiune);
comanda.Parameters.Add(new SqlParameter("@nume", nume));
comanda.Parameters.Add(new SqlParameter("@an", an));
comanda.Parameters.Add(new SqlParameter("@tara", tara));
comanda.ExecuteNonQuery();
答案 2 :(得分:2)
我找到了解决方案。
我有两张桌子 Echipa - 将EID(int)作为主键和自动编号 员工 - 有SID(int)只是自动编号首先,我必须从工作人员中删除该行,然后从Echipa删除它并且它有效! 在某个地方,我使用Comanda = System.Data.SqlClient.SqlCommand,对我来说更容易)并且是我的语言)
private void StergeElement(string nume)
{
conexiune.Open();
Comanda comanda = new Comanda("delete from staff where SID=@ID", conexiune);
comanda.Parameters.Add(new SqlParameter("@ID", nume));
comanda.ExecuteNonQuery();
comanda = new Comanda("delete from echipa where EID=@ID", conexiune);
comanda.Parameters.Add(new SqlParameter("@ID", nume));
comanda.ExecuteNonQuery();
conexiune.Close();
MessageBox.Show("Succes");
}
感谢@apomene的回答,它对我有所帮助!
答案 3 :(得分:1)
如果没有删除,(我猜您的字段名称为nume
),您只需删除引号:
Comanda comanda = new Comanda("delete from echipa where nume=@nume", conexiune);
comanda.Parameters.Add(new SqlParameter("@nume", nume));
comanda.ExecuteNonQuery();