>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Replicação Banco de Dados de SQLite para MySQL


Amigos,

Minha replicação está ocorrendo parcialmente, ou seja, se o texto do campo contém espaço, só grava a primeira palavra, ex.:

Rua das Flores > grava no banco MySQL > Rua
RuadasFlores > grava no banco Mysql > RuadasFlores

No banco SQLite está normal, o texto completo e meu mysql está configurado com VARCHAR(255).

Segue meu código:




import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.IBinder;
import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
* Created by Marco on 23/01/2015.
* Servico para exportar os daados do Giro
*/
public class ExportarGiro extends Service implements Runnable{

public void onCreate (){
new Thread(ExportarGiro.this).start();

}

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void run() {
SQLiteDatabase db = openOrCreateDatabase("giro.db", Context.MODE_PRIVATE, null);

Cursor cursor = db.rawQuery("SELECT * FROM giro", null);
int totalDB = cursor.getCount();
int totalReplicado = 0;

while(cursor.moveToNext()){
StringBuilder strURL = new StringBuilder();
strURL.append("http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=");
strURL.append(cursor.getString(cursor.getColumnIndex("logradouro")));
strURL.append("&numeroatual=");
strURL.append(cursor.getString(cursor.getColumnIndex("numeroatual")));
Log.d("ExportarGiro",strURL.toString());
try{
URL url = new URL(strURL.toString());
HttpURLConnection http = (HttpURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader line = new BufferedReader(ips);

String linhaRetorno = line.readLine();
if(linhaRetorno.equals("Y")){
db.delete("giro","id=?",new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado++;
Log.d("ExportarGiro","OK");
}else{

}


} catch(Exception ex){
Log.d("ExportarGiro",ex.getMessage());

}

}

db.close();
stopSelf();

if(totalDB == totalReplicado){

}



}

}



Por favor me ajudem.

Grato



3 Respostas


ola Marco...

qual tipo vc colocou logradouro??

varchar ou char ??




Olá André, no Mysql foi Varchar.

quando acesso diretamente pela URL no navegador vai normal. ex.:
http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=teste de rua&numeroatual=123


veja meu logcat:


01-23 17:12:11.472 14168-14168/com.g4s.br.giro W/ContextImpl%uFE55 Implicit intents with startService are not safe: Intent { act=INICIAR_REPLICACAO } android.content.ContextWrapper.startService:494 com.g4s.br.giro.CadastroActivity.onOptionsItemSelected:598 android.app.Activity.onMenuItemSelected:2600
01-23 17:12:11.602 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=Rua das Flores&numeroatual=123
01-23 17:12:11.832 14168-14216/com.g4s.br.giro D/dalvikvm%uFE55 GC_FOR_ALLOC freed 848K, 19% free 3898K/4804K, paused 28ms, total 54ms
01-23 17:12:12.422 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 OK
01-23 17:12:12.422 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 http://URL.com.br/webservice/giro-cadastro.php?logradouro=Rua das Flores&numeroatual=123
01-23 17:12:12.532 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 OK




RESOLVIDO

Depois de:


Try {

URL url = new URL(strURL.toString());


colocar:


URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();


ficando assim:

try{

URL url = new URL(strURL.toString());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();

HttpURLConnection http = (HttpURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader line = new BufferedReader(ips);

String linhaRetorno = line.readLine();
if(linhaRetorno.equals("Y")){
db.delete("giro","id=?",new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado ;
Log.d("ExportarGiro","OK");
}else{

}


} catch(Exception ex){
Log.d("ExportarGiro",ex.getMessage());

}