webForumDet fria alternativet

Problem med att uppdatera ett dataset

.NET

4 svar · 422 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Enligt tidigare tråd så försöker jag att via en windows app, uppdatera en web servise för att uppdatera en databas på min hemsida.

I windows app, så försöker jag att hantera ett dataset. Jag börjar med att
hämta all data ifrån databasen, inga problem.
Jag har lagt alla värden ifrån textboxar mm i en array, inga problem.

Jag skall nu försöka uppdatera datasetet, för att sen skicka över det till
web servicen.

private void UppdateraFraga(string[] AllaVärden)
        {
            
            int fraga = listBox1.SelectedIndex;
            Application.DoEvents();
            int a = 0;
            foreach (string värde in AllaVärden)
            {//hit stämmer allt
                MessageBox.Show("Uppdatera " + a + " " + värde.ToString());
                ds.Tables["musikfraga"].Rows[0][a] = värde;
                a++;
            }

Via Messageboxen så kan jag se attvärden är med mig, men vad jag förstår
så uppdateras inte datasetet. Är jag fel ute eller hur bör jag göra.

Medlem sedan feb. 2005280 inlägg
#2

inte helt säker men skulle tro att man även måste

ds.AcceptChanges();
Medlem sedan aug. 20003 575 inlägg
#3

saw skrev:

Enligt tidigare tråd så försöker jag att via en windows app, uppdatera en web servise för att uppdatera en databas på min hemsida.

I windows app, så försöker jag att hantera ett dataset. Jag börjar med att
hämta all data ifrån databasen, inga problem.
Jag har lagt alla värden ifrån textboxar mm i en array, inga problem.

Jag skall nu försöka uppdatera datasetet, för att sen skicka över det till
web servicen.

private void UppdateraFraga(string[] AllaVärden)
        {
            
            int fraga = listBox1.SelectedIndex;
            Application.DoEvents();
            int a = 0;
            foreach (string värde in AllaVärden)
            {//hit stämmer allt
                MessageBox.Show("Uppdatera " + a + " " + värde.ToString());
                ds.Tables["musikfraga"].Rows[0][a] = värde;
                a++;
            }

Via Messageboxen så kan jag se attvärden är med mig, men vad jag förstår
så uppdateras inte datasetet. Är jag fel ute eller hur bör jag göra.

Om du visa Servicen hämtar all data så måste du också spara all data.

DataSet GetData();
void SaveData(DataSet dataSet);

Även om detta kan vara en ganska dålig apporach tycker jag eftersom du skickar onödigt mycket data. Så ett bättre sätt hade ju varit

DataSet GetData();
void SaveOrUpdate(DataRow row);

Fast jag tycker ju visserligen helst att man skippar dataset's och gör objekt istället.

Medlem sedan mars 20011 880 inlägg
#4

Tack för kommentarer. jag hittade en snutt som fixade uppdateringen hyffsat.

int fraga = listBox1.SelectedIndex;
            DataTable dataTable = ds.Tables[0];
            DataRow selectedRow = dataTable.Rows[listBox1.SelectedIndex];
            da.Fill(ds, "musikfraga");
            Application.DoEvents();
            selectedRow.BeginEdit();
                selectedRow["Fraga"] = AllaVärden[1];
                selectedRow["Allt1"] = AllaVärden[2];
                selectedRow["Allt2"] = AllaVärden[3];
                selectedRow["Allt3"] = AllaVärden[4];
                selectedRow["Svar"] = AllaVärden[5];
                selectedRow["Ratt"] = AllaVärden[6];
            selectedRow.EndEdit();

            DataSet dsChanges = ds.GetChanges(DataRowState.Modified);
            bool okayFlag = true;
            if (dsChanges.HasErrors)
                {
                    MessageBox.Show("ERROR");
                }
            if (okayFlag)
            {
                da.Update(dsChanges, ("musikfraga"));
                label1.Text ="Updated " + selectedRow["Fraga"];
                Application.DoEvents();
                ds.AcceptChanges();
               
            }
            else 
                ds.RejectChanges();
            listBox1.SelectedIndex = fraga;

Detta är alltså hela updaten för att ändra i datasetet, är det dåligt?
Hur menade du Nickemannen med att göra object i stället?

Medlem sedan mars 20011 880 inlägg
#5

Jag kanske tänker galet, eftersom jag har alla värden sparade i "AllaVärden" so borde
det väll vara bättre och skicka det till Web Servicen och göra mina uppdateringar där?

347 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
210 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
209 ms — ändringar (db)