Jag har nu kommit så långt, att det inte medför några större problem att skicka ett dataset, och hantera Det är väl en god idé att ha två webmetoder för detta tycker jag. Jag har nog stängt in mig i ett hörn nu, vet inte hur jag skall göra. Jag hittade ett förslag som ser ut så här: Är man bara envis nog, så klarar man sig.Undringar om webbservice
det ifrån webservern till en windowsform byggd i C#.
Nu kommer det "dumma" frågor.
Min tanke är att plocka ner ett dataset, editera eller lägga till ett nytt, och sedan skicka upp det igen för
uppdatering av databasen.
Skall jag då ha två [WebMethod], en för att skicka datasettet, och en för att ta imott datasetet.
Hur gör man kort, för att ifrån den editerade datasetet skicka den till servicen?
Och ta imot den?
Jag har försökt hitta på nätet, och där finns massor om webservice, men jag hittar ingenting som
beskriver det jag söker.Sv: Undringar om webbservice
Att ta emot data från service till klient...
// Skapar ett proxyobjekt
MinProxy.MinKlass oProxy = new MinProxy.MinKlass();
// Skapar och tilldelar ett datset med data
DataSet oDs = oProxy.GetData();
.... WebService ....
[WebMethod(Description="Hämtar ett dataset fyllt med god data")]
public DataSet GetData()
{
// Kod som hanterar hämtningen av data till ditt datset
return MittDataset;
}
--------------------------------------------------
Att skicka data från klienten...
// Proxyobjektet skapas
MinProxy.MinKlass oProxy = new MinProxy.MinKlass();
// Kod som fyller eller editerar ditt dataset
// Skicka ditt dataset till webservicen
oProxy.SetData(oDs);
.... WebService ....
[WebMethod(Description="Tar emot ett dataset fyllt med god data")]
public void SetData(DataSet oDs)
{
// Kod som hanterar ditt dataset
}
På ett ungefär...
Medans du håller på och lär dig att använda och jobba med dataset så bör du också veta att dataset tar mycket prestanda. Fantastisk att använda då du hanterar stora mängder data eller då du utför många transaktioner mellan klient och server till databas.
Om du hanterar små mängder data och dina transaktioner inte är så omfattande bör du använda vanliga variabler så långt det är möjligt. Om du bara skall läsa data från webservice till klient är en datareader att föredra som är snabbare än ett dataset.
Det finns lite prestandavinster i att inte använda dataset i alla lägen.
Ta dig en funderare innan du använder dataset, behövs det eller klarar du dig med mindre databärare?Sv: Undringar om webbservice
I min windows app, så har jag lyckats med att manupelera datasetet.
Vad jag nu försöker med är att skicka upp det, och behandla det.
localhost.SAW saw = new localhost.SAW();
saw.SetDataSongKategori(myData);
Sedan i webservicen, tar jag imot den så här:
[WebMethod(Description="Hämtar allt ifrån SAW:s SångKategorier")]
public void SetDataSongKategori(DataSet oDs)
{
SAWService.Statestik.UppdateraKategori(ConnectionString,oDs);
}
Sedan i classen UppdateraKategori
public static string UppdateraKategori(string conn,DataSet ds)
{
OleDbConnection myConnection = new OleDbConnection(conn);
OleDbDataAdapter da = new OleDbDataAdapter("SELECT Kat_ID,Kategori FROM t_Kategori",myConnection);
DataSet ds2 = new DataSet("frånMelodiKat");
myConnection.Open();
da.Fill(ds,"frånMelodiKat");
myConnection.Close();
return "";
}
... jag får inga fel, men det blir inte heller några uppdateringar.
Sv:Undringar om webbservice
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);
}
Jag får emellertid ett error
<code>
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'
</code>
Jag är nog ute och cyklar, vet inte hur jag skall rätta till dessa error...
Sv: Undringar om webbservice
//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";
}