CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

MS SQL Server -> MySQL -> SQLite : Importare database

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Oct 2013
    Messaggi
    1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    MS SQL Server -> MySQL -> SQLite : Importare database

    Salve a tutti.

    Ho un database MySQL (accessibile in locale, il quale viene alimentato da un MS SQL Server [Esterno alla rete locale]) la cui struttura è replicata nell'applicazione Android che sto sviluppando.

    Deve realizzare un sistema che mi permetta, ogni qualvolta che premo il tasto di sincronizzazione, di replicare il contenuto di MySQL dentro SQLite.
    Se l'utente invece non sincronizza (causa assenza di collegamento internet o qualsiasi altro motivo) utilizzi i dati presenti in locale in SQLite.

    Viceversa, tramite altro pulsante, esportare verso MySQL alcune tabelle.

    Magari non sono stato capace io a cercare, ma non sono riuscito a trovare nessun aiuto ne in italiano ne in inglese.
    Sono riuscito solo a rendere disponibile i dati tramite json+php, ma non riesco ad esportare/importare

    Come posso implementare tale funzione?
    C'è la possibilità di collegarsi direttamente a MS SQL server? (Ahimè)
    Avete qualche esempio disponibile?


    Vi ringrazio anticipatamente per l'aiuto

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts
    Predefinito

    Intanto assicurati (se già non lo hai fatto) che i tipi in MySql siano compatibili con i tipi in SQLite onde evitare l'inconsistenza dei dati.
    Poi cosa significa che sei solo riuscito a rendere disponibili i dati?? tu nell'app riesci a fare delle query sul database MySql?

  4. #3
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da super905 Visualizza il messaggio
    Salve a tutti.

    Ho un database MySQL (accessibile in locale, il quale viene alimentato da un MS SQL Server [Esterno alla rete locale]) la cui struttura è replicata nell'applicazione Android che sto sviluppando.

    Deve realizzare un sistema che mi permetta, ogni qualvolta che premo il tasto di sincronizzazione, di replicare il contenuto di MySQL dentro SQLite.
    Se l'utente invece non sincronizza (causa assenza di collegamento internet o qualsiasi altro motivo) utilizzi i dati presenti in locale in SQLite.

    Viceversa, tramite altro pulsante, esportare verso MySQL alcune tabelle.

    Magari non sono stato capace io a cercare, ma non sono riuscito a trovare nessun aiuto ne in italiano ne in inglese.
    Sono riuscito solo a rendere disponibile i dati tramite json+php, ma non riesco ad esportare/importare

    Come posso implementare tale funzione?
    C'è la possibilità di collegarsi direttamente a MS SQL server? (Ahimè)
    Avete qualche esempio disponibile?


    Vi ringrazio anticipatamente per l'aiuto
    Ciao,

    io ho implementato con successo una connessione verso SQL Server tramite JTDS (jTDS JDBC Driver)
    Per l'uso bisogna importare un jar (jtds-1.2.5.jar) nella folder libs del progetto dell'app (suppongo tu stia usando Eclipse) e aggiungerlo nel java build path.

    A quel punto devi referenziare la connessione dall'app verso il db in questo modo ( ti faccio un esempio):

    codice:
    				
    				Connection conn = null;
    	            try {
    	            	String driver = "net.sourceforge.jtds.jdbc.Driver";
    	            	Class.forName(driver).newInstance();
    	            	String connString = "jdbc:jtds:sqlserver://" +
    	            			ipServer + ";encrypt=false;user=" +
    	            			getResources().getString(R.string.jdbc_user) + 
    	            			";password=" + 
    	            			getResources().getString(R.string.jdbc_password) +
    	            			";instance=MSSQLSERVER;";
    	            			
    	            	conn = DriverManager.getConnection(connString,getResources().getString(R.string.jdbc_user),getResources().getString(R.string.jdbc_password));
    	            	
    	            	Log.w("Connection","Aggiornamento");
    	            	Statement stmt = conn.createStatement();
    	            	resultSet = stmt.executeQuery("select Id, Nome, Cognome from Clienti");
                		miodb = new SQLiteAdapter(contesto);
                		miodb.openToWrite();
                		while(resultSet.next()){
                			miodb.insertClientiFromSQLServer(
                					resultSet.getString(1).toString().replace("'", "''"), 
                					resultSet.getString(2).toString().replace("'", "''"), 
                					resultSet.getString(3).toString().replace("'", "''");
    	            	} 					
                		serverStatus=1;
    	            	miodb.close();
    	            	resultSet.close();
    	            	stmt.close();
    	            	stmt = null;
    	            	conn.close();
    					
    					} catch (Exception e) {
    					e.printStackTrace();
    					serverStatus=0;
    				}
    come vedi una volta che hai un cursor dalla connessione puoi farne quello che vuoi. Idem per aggiornare da device a server (esegui delle insert/update/delete).

    Attenzione soltanto che i Cursor di JTDS partono da 1 (per la posizione colonna) mentre quelli sqlite partono da 0.

    Spero sia sufficiente, rimango a disp,
    Ciao

    p.s. JTDS ti consente di connetterti anche verso MySql
    Ultima modifica di frank17next; 04-12-13 alle 12:14 - Motivo: correzione ortografica
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy