Pocket Pc, select su sql server

mercoledì 08 febbraio 2006 - 11.48

rube Profilo | Newbie

Ciao a tutti, io avrei una domanda da proporvi

Sto sviluppando un'applicazione in Vb per pocket pc, vorrei sapere se è possibile fare una select diretta su un server remoto e non sul server locale del pocket pc.

Io ho solo trovato il comando submitsql che mi consente di fare un delete,insert,update su server remoto ma nn consente di fare una select che ritorni dati.

Sapete se si puo fare, avete qualche link?

Se nn si puo fare l'unica soluzione è quella di creare ogni volta una tabella locale prendendo i dati dal server con il metodo pull? O magari ci sono altre soluzioni?

Grazie mille a tutti.

Brainkiller Profilo | Guru

>Sapete se si puo fare, avete qualche link?

Forse l'avrai già visto:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sqlce/htm/_lce_rda_prog_submitsql.asp

>Se nn si puo fare l'unica soluzione è quella di creare ogni volta
>una tabella locale prendendo i dati dal server con il metodo
> pull? O magari ci sono altre soluzioni?

Ciao,
allora ho provato un paio di volte ad usare SQLCE con un SQL Esterno. Ci ho sbattuto poco la testa perchè a mio avviso era un po' macchinosa tutta l'operazione di configurazione. Ho deciso così di sviluppare le soluzioni in altro modo e cioè costruire un Web Service sulla macchina remota (SQL Remoto) che poi richiamo dal PocketPC. In questo modo l'elaborazione dati viene fatta sul SQL Remoto (ben + potente di SQL CE) e una volta elaborati, o recuperati i dati vengono inviati al PocketPC sotto forma di DataSet serializzato o altro.
Io prenderei in esame anche questa ipotesi.

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

rube Profilo | Newbie

Innanzitutto ti ringrazio per il suggerimento.

La funzione submitsql l'avevo già notata ma come ti dicevo questo comando da quel che ho capito consente di fare un update,delete o insert ma non una select che ritorni dati!

La tua idea è ottima, ma fondamentalmente ha un problema, nel caso in cui non riesco a connettermi al server remoto (per problemi di connessione xchè non c'è ricezione o altro) non potrei piu lavorare (salvare o inserire dati) o sbaglio?

Cmnq l'idea è molto interessante mi potresti dare qualche dettaglio in piu di come funziona o magari qualche link di spiegazione?

grazie mille ancora!

Brainkiller Profilo | Guru

>La tua idea è ottima, ma fondamentalmente ha un problema, nel
>caso in cui non riesco a connettermi al server remoto (per problemi
>di connessione xchè non c'è ricezione o altro) non potrei piu
>lavorare (salvare o inserire dati) o sbaglio?

Ciao,
beh se non c'è connettività, non puoi nè connetterti a server remoti SQL, nè a un Web Service remoto, quindi in entrambi in casi non puoi prendere o inserire niente all'esterno del Pocket PC.

>Cmnq l'idea è molto interessante mi potresti dare qualche dettaglio

Ciao,
beh la costruzione di un Web Service è molto banale. E' necessario creare un progetto di tipo ASP.NET. Una volta creato aggiungi un nuovo file al progetto, seleziona l'icona "Web Service", e viene creato un file con estensione .asmx
Quello è il Web Service. Se vai nel code behind con tasto destro View Code vedrai un metodo indicato con [WebMethod]. Questo indica i metodi che saranno esposti verso l'esterno e richiamabili da PC remoti, Pocket PC, ecc.

Il WebMethod lo sviluppi come un qualsiasi metodo, con parametri di input e output.
Una volta compilato e deployato il progetto se richiami il web service vedrai una cosa di questo tipo:
http://webservices.dotnethell.it/codicefiscale.asmx
con elencati i metodi che hai sviluppato.
Se li clicchi puoi anche testarli esempio:
http://webservices.dotnethell.it/codicefiscale.asmx?op=CodiceComune
Inserisci Milano e Premi Ok.
Avrai come ritorno questa stringa XML:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://webservices.dotnethell.it/CodiceFiscale">f205</string>

con dentro il codice F205 che è di Milano. Qui invece di ritornare un codice tu ritornerai dei dati dal DB SQL Server.

Per consumare questo Web Service da una applicazione del Pocket PC, nel progetto Pocket PC, ti basterà fare tasto destro sul progetto "Add Web Refernces". A quel punto digiterai il percorso del webservice (per es. http://webservices.dotnethell.it/codicefiscale.asmx) e darai Ok.
VSNET crea una classe Proxy per itnerfacciarti con il Web Service.

Ora dal tuo codice potrai richiamare i metodi che abbiamo richiamato manualmente prima. Passare dati da inserire nel SQL Remoto, oppure ricevere dati dal DB Remoto, ecc.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

rube Profilo | Newbie

Grazie mille, il metodo web services funziona.

Rimane il problema che ti dicevo, vale a dire con la sincronizzazione sql server c'è la possibilità di lavorare in locale e quando ho linea inviare/ricevere i dati modificati (grazie ai metodi push/pull) , mentre con il web services non posso lavorare in locale visto che il database si trova unicamente su server.

Ora devo vedere se riesco a inserire i dati nel sqlce su pocket pc grazie alla connessione con il web services o sviluppare un applicazione con i due metodi integrati.

Ti ringrazio ancora visto che mi sei stato molto utile.

Ciao




Brainkiller Profilo | Guru

>Rimane il problema che ti dicevo, vale a dire con la sincronizzazione
>sql server c'è la possibilità di lavorare in locale e quando
>ho linea inviare/ricevere i dati modificati (grazie ai metodi
>push/pull) , mentre con il web services non posso lavorare in

Ciao Rube,
anche con il Web Service (in mancanza di connettività) puoi lavorare in locale. La tua applicazione naturalmente dovrà salvare i dati o dentro SQLCE oppure su un file di testo o su un file .xml. La prima volta che il PocketPC si riconette alla rete, rileggi il file .txt o i dati da SQLCE e richiami i moetodi del Web Service che ti popolano i dati sul SQL Remoto.
Insomma ci sono vari modi, scegli quello a te più congeniale.
ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

rube Profilo | Newbie

Effettivamente l'idea sarebbe quella di salvare il data set che mi ritorna il web services in SQLCE. Pero mi sto perdendo in un bicchiere d'acqua perchè nn capisco come fare. Esiste qualche classe predefinita, io nn ho trovato molto. Sicuro sarà una caxata e io annaspo cercando cose complicate.

Qualche idea?

Grazie mille ancora!

rube Profilo | Newbie

Aiuto!Uffi nn riesco!

Allora ecco una parte del codice:

Dim ds As New DataSet

Dim wsql As New GruWebRef.WebServicesGrü

ds = wsql.getSQL("select ItemCode, ItemName,CardCode,BuyUnitMsr from OITM where Itemcode = '10'")

Praticamente la funzione getSQL mi ritorna i dati che popolano il mio dataset ds!Ora come faccio a salvare i dati in SQLCE?

Le ho provate tutte ma nn sono riuscito!

Grazie!sono disperato!


Brainkiller Profilo | Guru

>Praticamente la funzione getSQL mi ritorna i dati che popolano
>Le ho provate tutte ma nn sono riuscito!

1) A livello di sicurezza un metodo getSQL con passaggio di una Query così direttamente è una cosa da paura, non si fa!

2) Una volta che hai il DataSet ci sono diversi modi per serializzarlo, puoi salvarlo su disco con il metodo WriteXML oppure puoi enumerare le varie righe che lo compongono ed inserirle in SQLE.

Quello che mi sfugge è perchè vuoi inserirle in SQLCE ? Perchè lo useresti come store temporaneo dei dati ?

Ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5