01. maj 2007 - 14:26
Der er
11 kommentarer og
1 løsning
Opdatere database fra DataGridView
Hej
Jeg har en Datagridview, som jeg fylder ved hjælp af et dataset. Men hvis der bliver ændret i Datagridview vinduet, så skal databasen også opdateres. Hvordan laver jeg det nemmest?
Jeg får en fejl, selvom jeg har copy pastet den kode. Den henter fint data ind i datagridview controllen.
Men når den skal gemme, får jeg en exception her
da.Update((DataTable)bs1.DataSource);
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
Jeg får kun lov til at updatere databasen, hvis det er alle kolonner der er med.
Altså "select * FROM produktion"
Ikke hvis jeg gør sådan
"SELECT ProdKort, StartTid, StopTid FROM produktion"
Og jeg skal ikke have alle sammen med? Hvad gør jeg for at løse dette?
SqlConnection con = new SqlConnection(DataGateway.ConS);
SqlDataAdapter sqlDa;
DataSet dSet = new DataSet();
private void altdata_Load(object sender, EventArgs e)
{
sqlDa = new SqlDataAdapter("SELECT ProdKort, StartTid, StopTid, DriftTimer, ProdtuktType1, ProduktType2, ProduktType3 FROM Produktion", con);
sqlDa.Fill(dSet, "Produktion");
DGVMain.DataSource = dSet.Tables["Produktion"];
}
private void Redigering_FormClosing(object sender, FormClosingEventArgs e)
{
SqlCommand upCmd = new SqlCommand("update Produktion set ProdKort=@prodkort, StartTid=@starttid, StopTid=@stoptid, DriftTimer=@drifttimer, ProdtuktType1=@prodtukttype1, ProduktType2=@produkttype2, ProduktType3=@produkttype3", con);
upCmd.Parameters.Add("@prodkort", SqlDbType.Int, 4, "1111");
upCmd.Parameters.Add("@starttid", SqlDbType.DateTime, 8, "1111");
upCmd.Parameters.Add("@stoptid", SqlDbType.DateTime, 8, "1111");
upCmd.Parameters.Add("@drifttimer", SqlDbType.Decimal, 9, "1");
upCmd.Parameters.Add("@prodtukttype1", SqlDbType.Int, 4, "11");
upCmd.Parameters.Add("@produkttype2", SqlDbType.Int, 4, "11");
upCmd.Parameters.Add("@produkttype3", SqlDbType.Int, 4, "11");
sqlDa.UpdateCommand = upCmd;
sqlDa.Update(dSet, "Produktion");
}
Hvordan får jeg den til at opdatere de felter i databasen? Det kan jeg ikke lige overskue?
du skal have primary key med som en where i
("update Produktion set ProdKort=@prodkort, StartTid=@starttid, StopTid=@stoptid, DriftTimer=@drifttimer, ProdtuktType1=@prodtukttype1, ProduktType2=@produkttype2, ProduktType3=@produkttype3
jo f.eks:
upCmd.Parameters.Add("@prodkort", SqlDbType.Int, 4, "ProdKort");