webForumDet fria alternativet

Problem med att skicka värden till web service

.NET

4 svar · 361 visningar · startad av saw

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

Att hämta data ifrån min web service, är just nu inga problem,
men att skicka upp ett editerat dataset, ställer till det för mig.
Jag försöker att utnytja ett exempel som jag hittade...

private void  UppdateraDatabasen()
{			
localhost.SAW saw = new localhost.SAW();
DataSet ds = (DataSet) myData; 
DataSet dsChanges = ds.GetChanges();
if (dsChanges != null)
{
ds.Merge(saw.SetDataSongKategori(dsChanges), true);
}

Detta ger mig följande error:

E:\C#\Saw_Admin\Admin\Song.cs(409): The best overloaded 
method match for 'System.Data.DataSet.Merge
(System.Data.DataSet, bool)' has some invalid arguments

E:\C#\Saw_Admin\Admin\Song.cs(409): Argument '1': cannot 
convert from 'void' to 'System.Data.DataSet'

Tacksam för förslag...

:moose

Medlem sedan maj 20018 027 inlägg
#2

Vad returnerar denna funktion: saw.SetDataSongKategori(dsChanges)? Att döma av felmeddelandet returnerar den en void. Då blir i så fall första argumentet i ds.Merge() en void, trots att dsChanges verkligen är ett DataSet.

Medlem sedan mars 20011 880 inlägg
#3

Den skall alltså skicka ett dataset till web servicen.
Jag vet att jag har en del fel, men kan inte klura ut hur jag skall lösa det.
Skall jag inte ha med void i classen UppdateraDatabasen?

Medlem sedan mars 20011 880 inlägg
#4

Det lyckades bättre än vad jag trodde.

//i windowsformen
private void  UppdateraDatabasen()
{			
localhost.SAW saw = new localhost.SAW();
saw.SetDataSongKategori(myData);
//i web servicen
[WebMethod(Description="Hämtar allt ifrån SAW:s SångKategorier")] 
public void SetDataSongKategori(DataSet oDs) 
{ 
SAWService.Statestik.UppdateraKategori(ConnectionString,oDs);
} 
//i classen
public static string  UppdateraKategori(string conn,DataSet ds)
{
OleDbConnection myConnection = new OleDbConnection(conn);
OleDbDataAdapter daCust = new OleDbDataAdapter("SELECT Kat_ID,Kategori FROM t_Kategori", myConnection);
OleDbCommandBuilder cbCust = new OleDbCommandBuilder(daCust);
daCust.Update(ds);		
return "OK";
}

Detta fungerar bra, men nu uppdaterar jag ju bara en tabel.
Frågan är, hur man gör när flera tabeler är med...

Medlem sedan nov. 20041 inlägg
#5

Hur fungerar denna lösningen över olika plattformar? hur ser xml-filen ut (soap-meddelandet)?

278 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)