Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Update baze preko WebService-a

[es] :: .NET :: Update baze preko WebService-a

[ Pregleda: 5364 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BamBy666
Damir Podhorski
Osijek

Član broj: 7461
Poruke: 16
*.cmu.carnet.hr

Sajt: www.escapestudio.net


Profil

icon Update baze preko WebService-a18.01.2003. u 21:18 - pre 258 meseci
Evo, opet ja s jednim problemom...dakle, pravim jedan web servis koji bi trebao sluziti za update baze. Klijent salje podatke u DataSetu a web servis ih prima i sprema u bazu.Sve je ok ako je klijentski DataSet popunjen iz DataGrida kontrole. Kad isti dataSet popunim i npr. adaptera (tj. i klijentske baze) web servis ne radi update baze. U cemu je problem?!
 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: Update baze preko WebService-a19.01.2003. u 06:57 - pre 258 meseci
Pozdrav

Da li bi mogao da posaljes primer punjenja DataSet-a iz jednog i iz drugog sourca?
dotnet
 
Odgovor na temu

BamBy666
Damir Podhorski
Osijek

Član broj: 7461
Poruke: 16
*.cmu.carnet.hr

Sajt: www.escapestudio.net


Profil

icon Re: Update baze preko WebService-a19.01.2003. u 11:38 - pre 258 meseci
Dim web As New Web.Service1()
Dim row As DataRow = DataSet41.Tablica.NewRow
Dim rowa As DataSet4.TablicaRow

rowa = DataSet41.Tablica.NewRow


rowa.Ime = txtIme.Text
rowa.Prezime = txtPrezime.Text
rowa.GodRod = txttGodRod.Text

DataSet41.Tablica.Rows.Add(rowa)

web.DodajDrugi(DataSet41)

Ovo je source za update baze za podatke koji se dodaju iz DataGrida. Da ne šaljem sve sad, za drugi update stvar je ista samo što se DataSet puno preko adaptera iz baze npr:

daBaza.Fill(DataSet41,"Tablica")

Web Serice ima jednu jednostavnu metodu koja bi trebala vršiti update baze iz primljenog dataseta:

<WebMethod()> Public Function DodajDrugi(ByVal dsUlaz As DataSet) As String
daProba.Update(dsUlaz)
DodajDrugi = "Podaci uspješno dodani"
End Function

daProba je DataAdapter. Nisam ga instanciorao putem koda nego samo izvukao tablicu iz server explorera...:)

Eto...
 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: Update baze preko WebService-a20.01.2003. u 00:29 - pre 257 meseci
Pozdrav

Iz prilozenog koda nisam mogao mnogo da vidim, tako da ti saljem jedan primer koji sam upravo sklepao i koji funkcionise. Tako da ako nije resenje nastavljamo sa konkretnim stvarima iz tvog problema.

Ovo je klijent code:

Dim cn As New SqlConnection ("server=localhost;database=northwind;uid=sa;pwd=;")
Dim da As New SqlDataAdapter("SELECT * FROM Employees", cn)
Dim ds As New DataSet()

da.Fill(ds, "Employees")

Dim table As DataTable = ds.Tables("Employees")
Dim row As DataRow = table.NewRow()

row("LastName") = "LastName"
row("FirstName") = "FirstName"
row("Title") = "Title"
table.Rows.Add(row)

Dim a As New localhost.Service1()

'Poziv WebMethod-a
a.UpdateBaze(ds)

cn.Close()

Ovo je WebService code:

<WebMethod()> Public Function UpdateBaze(ByVal ds As DataSet) As String
Dim cn As New SqlConnection("server=localhost;database=northwind;uid=sa;pwd=;")
Dim da As New SqlDataAdapter("SELECT * FROM Employees", cn)
Dim builder As New SqlCommandBuilder(da)
da.Update(ds, "Employees")
cn.Close()
UpdateBaze = "Uspesno"
End Function
dotnet
 
Odgovor na temu

BamBy666
Damir Podhorski
Osijek

Član broj: 7461
Poruke: 16
*.cmu.carnet.hr

Sajt: www.escapestudio.net


Profil

icon Re: Update baze preko WebService-a20.01.2003. u 10:04 - pre 257 meseci
Taj kod radi fino i ne pravi mi nikakve probleme. No problemi se javljaju kada na klijenu podatke skupljam iz baze i šaljem ih kao dataset web servisu:
, npr.:

Dim cn As New SqlConnection ("server=localhost;database=northwind;uid=sa;pwd=;")
Dim da As New SqlDataAdapter("SELECT * FROM Employees", cn)
Dim ds As New DataSet()

da.Fill(ds, "Employees")

Dim a As New localhost.Service1()

'Poziv WebMethod-a
a.UpdateBaze(ds)

<kod za web method je isti kao tvoj>

O čemu se zapravo radi. Klijent ima bazu na SQL Serveru i njegovi zaposlenici dnevno ažuriraju tu bazu. E sad, ja mu radim web stranicu i on bi htjeo da poslije svakog radnog dana određene podatke ažurira na web stranici (MS Access). pošto ima oko 1500 proizvoda, web sučelje ne dolazi u obzir. Zato sam mislio napraviti klijent aplikaciju koja popuni dataset (iz stored proc.), pozove web method i pošalje mu dataset, koji zatim iz tog dataseta azurira bazu na serveru (MS Access). No nazalost to ne radi.
Podaci dodju na server, tj. dataset iz web metoda ih primi (testirao sam) ali jednostavno ne zeli sve te promjene spremiti u bazu!!!


 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: Update baze preko WebService-a20.01.2003. u 19:08 - pre 257 meseci
Ok, upravo sam uradio primer koji radi upravo to:

Klijent code:

Dim localCN As New SqlConnection("server=localhost;database=northwind;uid=sa;pwd=;")
Dim localDA As New SqlDataAdapter("SELECT * FROM Employees", localCN)
Dim localBuilder As New SqlCommandBuilder(localDA)
Dim localDS As New DataSet()

localDA.AcceptChangesDuringFill = False

localDA.Fill(localDS)

Dim a As New localhost.Service1()

'Poziv WebMethod-a
a.UpdateBaze(localDS)

localCN.Close()

WebService code:

<WebMethod()> Public Function UpdateBaze(ByVal localDS As DataSet) As String
Dim remoteCN As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Northwind.mdb") + ";")
Dim remoteDA As New OleDbDataAdapter("SELECT * FROM Employees", remoteCN)
Dim remoteBuilder As New OleDbCommandBuilder(remoteDA)
Dim remoteDS As New DataSet()

remoteDA.Fill(remoteDS)


Dim remoteColArray(1), localColArray(1) As DataColumn

remoteColArray(0) = remoteDS.Tables(0).Columns("EmployeeID")
remoteDS.Tables(0).PrimaryKey = remoteColArray

localColArray(0) = localDS.Tables(0).Columns("EmployeeID")
localDS.Tables(0).PrimaryKey = localColArray

remoteDS.Merge(localDS, False)

remoteDA.UpdateCommand = remoteBuilder.GetUpdateCommand()
remoteDA.InsertCommand = remoteBuilder.GetInsertCommand()
remoteDA.DeleteCommand = remoteBuilder.GetDeleteCommand()

remoteDA.Update(remoteDS)

remoteCN.Close()

UpdateBaze = "Uspesno"
End Function

Nadam se da je to to.

Pozdrav
dotnet
 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: Update baze preko WebService-a21.01.2003. u 08:05 - pre 257 meseci
Mala napomena

Da bi ovaj primer radio potrebno je da tipovi polja u obe tabele budu isti u ovom slucaju 'Employees'. Tako je koloni 'Photo' iz Access baze promenjen tip polja u 'OLE Object', kako bi odgovarao tipu polja 'image' istoimene kolone iz MS SQL.

Pozdrav
dotnet
 
Odgovor na temu

BamBy666
Damir Podhorski
Osijek

Član broj: 7461
Poruke: 16
*.cmu.carnet.hr

Sajt: www.escapestudio.net


Profil

icon Re: Update baze preko WebService-a21.01.2003. u 21:53 - pre 257 meseci
Hvala kod radi odlično i upravo onako kako treba. Da li bi ti bio problem da malo iskomentiras web servis. Otprilike nazirem sta se događa ali nisam sto posto siguran...
 
Odgovor na temu

dotnet
Beograd

Član broj: 4344
Poruke: 112
*.verat.net

Jabber: dotnet@elitesecurity.org


Profil

icon Re: Update baze preko WebService-a23.01.2003. u 09:35 - pre 257 meseci
Pozdrav

Kada je klijent u pitanju, obrati paznju na 'localDA.AcceptChangesDuringFill = False'.

Objasnjenje na linku:

http://msdn.microsoft.com/libr...ceptchangesduringfilltopic.asp

Kada je WebService u pitanju:

Definisanje primarnih kljuceva u DataTable je bitno kako nebi doslo do dupliranja podataka.

Objasnjenje za 'remoteDS.Merge(localDS, False)' na linku:

http://msdn.microsoft.com/libr...atadatasetclassmergetopic2.asp


dotnet
 
Odgovor na temu

[es] :: .NET :: Update baze preko WebService-a

[ Pregleda: 5364 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.