>
public void onClick(DialogInterface dialog, int which) {
//Inicia replicacao
while(c.moveToNext()){
StringBuilder strURL=new StringBuilder();
strURL.append("http://192.168.1.100/android/inserir.php?nome=");
strURL.append(c.getString(c.getColumnIndex("nome")));
strURL.append("&email=");
strURL.append(c.getString(c.getColumnIndex("email")));
//Log.d("Replicacao",strURL.toString());
try {
URL url = new URL(strURL.toString());
Log.d("Replicacao",url.toString());//Pegas a url normal
HttpURLConnection http = (HttpURLConnection)url.openConnection();
Log.d("HTTP", http.getInputStream().toString());//n pega o getInputStream
InputStreamReader ips = new InputStreamReader(http.getInputStream());
Log.d("IPS", "Passou do IPS");
BufferedReader bf = new BufferedReader(ips);
Log.d("BF", "Passou do BufferedReader");
String linhaRetorno = bf.readLine();
Log.d("Linha Retorno",linhaRetorno);
if(linhaRetorno.equals("Y")){//le as linhas
//total+=1;
Toast.makeText(getBaseContext(),"CAIU AQI IF",Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
}
ola Rodrigo
nao ha erro neste codigo se esta caindo la no if de acordo com o seu codigo entao esta rodando bem
deve estar com algum problema na parte do progress dialog
se puder mostre todo o seu codigo
package br.com.example.clientes;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.State;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class ReplicarActitivity extends Activity{
Button btreplicar;
TextView tvTotal;
private Cursor c=null;
int i=1;
int total =0;
int totalDb=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.replicar);
tvTotal=(TextView)findViewById(R.id.tvTotalReg);
btreplicar=(Button)findViewById(R.id.btreplicar);
SQLiteDatabase db = openOrCreateDatabase("cliente.db",Context.MODE_PRIVATE,null);
c = db.rawQuery("SELECT * FROM clientes",null);
totalDb=c.getCount();
tvTotal.setText("Total de Registros: " String.valueOf(totalDb));//recebe total de registros
ConnectivityManager conn = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(conn.getNetworkInfo(0).getState()==State.CONNECTED){
btreplicar.setEnabled(true);//ativado
}else if(conn.getNetworkInfo(1).getState()==State.CONNECTED){
btreplicar.setEnabled(true);
}else{
btreplicar.setEnabled(false);
tvTotal.setText("Você precisa de conexão!!");
}
btreplicar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Builder msg = new Builder(ReplicarActitivity.this);
msg.setMessage("Deseja iniciar a Replicacao?");
msg.setPositiveButton("SIM",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Inicia replicacao
while(c.moveToNext()){
StringBuilder strURL=new StringBuilder();
strURL.append("http://192.168.1.100/android/inserir.php?nome=");
strURL.append(c.getString(c.getColumnIndex("nome")));
strURL.append("&email=");
strURL.append(c.getString(c.getColumnIndex("email")));
//Log.d("Replicacao",strURL.toString());
try {
URL url = new URL(strURL.toString());
Log.d("Replicacao",url.toString());
HttpURLConnection http = (HttpURLConnection)url.openConnection();
Log.d("HTTP", http.getInputStream().toString());//n pega o getInputStream
InputStreamReader ips = new InputStreamReader(http.getInputStream());
Log.d("IPS", "Passou do IPS");
BufferedReader bf = new BufferedReader(ips);
Log.d("BF", "Passou do BufferedReader");
String linhaRetorno = bf.readLine();
Log.d("Linha Retorno",linhaRetorno);
if(linhaRetorno.equals("Y")){//le as linhas
//total =1;
Toast.makeText(getBaseContext(),"CAIU AQI IF",Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
if(total==totalDb){
Toast.makeText(getBaseContext (),"Sucesso : total de " total "/" totalDb,Toast.LENGTH_SHORT).show();
}
}
});
msg.setNegativeButton("NAO",null);
msg.show();
}
});
}
}
vc viu la no (xamp ou wamp) se esta colocando os dados???
sim está tudo certo inclusive a String ela passa certinho com os parâmetros.. o fato é que quando chega no Http ou InputStreamReader não csg completar.. tanto é que nem tá chegando no if, senao apareceria aquele toast..
vc colocou la no android manifest a permissao de internet??
Sim. Até testei com um script em jsp rodando no tomcat e não deu certo. Pelo logcat constatei q o erro está dps que ele chama o metodo getInputStream() com a instância http
Mostre a criacao do bd clientes do mysql e do sqllite.. porfavor
Verifica tbm se o seu wamp ou xamp esta on.....
$conn = mysql_connect("localhost","root","1234");
$db=mysql_select_db("cliente");
$SQL="INSERT INTO clientes(nome,email)";
$SQL.= " VALUES ( '".$_GET['nome']."','".$_GET
['email']."')";
echo $SQL;
$query = mysql_query($SQL);
if(mysql_affected_rows($conn) >0) {
echo "Y";
}
else{
echo "N";
}
?>
package br.com.example.clientes;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DB extends SQLiteOpenHelper {
private static String dbName= "cliente.db";
private static String sql ="CREATE TABLE IF NOT EXISTS [clientes] "
"([id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
"[nome] VARCHAR(50),"
"[email] VARCHAR(40),"
"[endereco] VARCHAR(50),"
"[numero] VARCHAR(10))";
private static int version =1;
public DB(Context ctx) {
super(ctx,dbName,null,version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
Segue a seguir a img do logcat, onde pegue a url junto com os parametros do que são os dados do sqlite belezinha, porém não consegue pegar os logs a partir do HTTP.
Rodrigo,
vc esta usando o skype.????
se estiver usando tente esse aki....
http://myblogit.net/2007/06/24/skype-and-xampp-working-together-in-harmony/
Não estou usando não, nem tenho
A pergunta pode ser besta mas eu tenho q perguntar
onde vc esta salvando os arquivos php??
C:\xampp\htdocs\android
Quando passo os parametros na propria url do navegador ele adiciona, porém quando tento pegar esses parâmetros no android não adiciona. Então o erro, creio está em algo no android, e não é no manifest, nem na codificação pelo que sei
Será se pode ser por que eu to usando o android 4.3?
nao, creio q nao
veja la no seu php
la na parte
if(mysql_affected_rows($conn) >0) {
echo "Y";
coloca
assim
if(mysql_affected_rows($query) >0) {
echo "Y";
veja se isto resolve
Cara nada ainda, testei e nda.. As mensagens de log param de aparecer a partir do momento em que eu chamo o método getInputsStream na instância http (ali na linha 86)
tu fez a alteracao no php??
qual o erro q ta dando agora..
porfavor
coloque aqui...
No android é o msm erro n csg chamar o método getInputStream, no php retorna "N" pois não há nenhum registro no msql
A unica coisa eu posso pedir p tu fazer é reinstalar o eclipse..
pq esse codigo esta funcionando... Eu axo q é algo no teu eclipse.. e reinstala o xampp tbm. E refaz tudo...
porfavor..
Cara to tentando atualizar o sdk sempre que vai baixar alguma biblioteca do servidor do google ta dando erro.. Sempre que abro o eclipse diz pra atualizar pra versao 22.2.1 axo q e isso. Ja q to usando 22.0.1 por ae..
cara sempre q executo a replicacao aparece esses erros ae no logcat, será se tem algo haver com o fato de não esta replicando? lembrando que tentei fazer em modo de services também e não deu certo
vc reinstalou o eclipse??
Ainda não, tu acredita que o erro possa ser do eclipse mesmo? Por que então farei este processo de reinstalação hoje ao voltar da faculdade..
talvez.... tu fez direitinho como o rafael ta ensinando.............
nao era p dar esse erro p isso tenta reinstalar o eclipse.............
eu ainda num tinha visto este erro...
cara esse eclipse web n é instalado apenas extraído. O q tentei foi executar o app a partir do eclipse adt que antes eu usava, porém agora o adt nem inicializa, no momento que tá no inicio do loading do workspace ele apenas sai.. Acredito que o app irá rodar nesse adt. E outra o pc deve tá com o ip que foi setado no código do android tipo (192.168.1.100) ou pode ta com ip automatico ?
ola rodrigo,
cara tenta extrair esse adt para rodar o programa p ver se vai dar esse erro
e o ip q vc usa é da sua maquina;...
testei esse projeto no note do meu irmão deu a mesma coisa também, acredito então que o problema esteja no projeto não sei aonde.. posso te mandar o projeto pra tu dar uma olhada?
claro.. pode mandar
http://rlsystem.com.br/forum/disco/uploads/4ea96b4fd399491ee5035da13d339fa2-Clientes.zip
Olha ae daí dps q tu testar tu passa o feedback .. enquanto isso vou estar fazendo outra app
ola rodrigo
vc me passou o programa certo???
pq eu naum achei a parte da replicacao
ta no pacote de clientes .. la embaixo tem ReplicaActivity
ola Rodrigo
foi desatencao minha, é pq como tenho muitos projetos aki acabei me confundindo...
vc pode me passar seus php e fazer o backup do wamp com o banco de dados
porfavor
$conn = mysql_connect("localhost","root","1234");
$db=mysql_select_db("cliente");
$SQL="INSERT INTO clientes(nome,email)";
$SQL.= " VALUES ( '".$_GET['nome']."','".$_GET
['email']."')";
echo $SQL;
$query = mysql_query($SQL);
if(mysql_affected_rows($conn) >0) {
echo "Y";
}
else{
echo "N";
}
?>
dai tu cria no banco mysql um base de dados por nome cliente e tabela clientes
contendo os campos nome e email, ambos varchar
Cara eu estou com o mesmo erro, mas o meu nao passa do HttpsURLConnection, tentei de tudo e nada. O que mais dúvidei foi o ip, será que tem algo a ve,? pois o erro vem quando faço a conexão da url. E outra se eu copiar a url com o ip da minha máquina (192.168.1.101) e colar no browser, ele não reconhece... Só da certo se no lugar do ip eu por localhost ou o ip paralelo que é o 127.0.0.1, porém no android tento colocar todas estas opções e nenhuma rola, sempre trava no HttpsURLConnection. Eu estou usando no wamp e esta tudo certo: servidor ligado arquivos php idênticos ao do professor e tudo. Não sei mais o que fazer... Se alguém souber ae...
Segue uma imagem do meu LogCat
http://rlsystem.com.br/forum/disco/uploads/9add19fc58a39f1d4f916b9c8219fa6c-log.png
OBS: Ah, eu vi tbm no phpMyAdmin uma aba chamada replicação, que é o que estamos fazendo, mas nao tenho a mínima idéia de como configura-la,
facam o exemplo aqui desse site:
http://androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
mas tarde eu passo aqui o exemplo q eu fiz
E aí cara você testou no teu pc ae? To sem o note que tá os códigos por isso não mandei o backup do banco
ola rodrigo..
poise.. naum tinha dado esse erro ... qdo eu testei ..
mas agora esta dando esse erro...
mas vc testou o codigo do site acima q eu te passei...???
Ah não testei ainda.. Cara se tu souber que erro é esse tu me diz..
Irei testar até porque tenho q fazer um app para o estágio ou tcc to vendo ainda..
Quais app você acha bacana para se criar, dá uns exemplos aí..
eu ainda naum sei.... pq como te falei esse codigo eu ja havia testado e tava funcionando comigo...
mas tem outro aki
http://rlsystem.com.br/forum/disco/uploads/1643a197e1720e3e8c5760f06e04f35a-ExemploMysql.zip
eu testei no wamp
e pegou
mas tem q dar permissoes p wamp poder aceitar todos os ips
testei esse ai, ele tá entrando no catch.. tu sabe como dar permissões para poder act tds os ips no xamp?
primeiro vai la no httpd.conf
e ache a linha
Allow from ::1 127.0.0.0
e troque para essa linha
Allow from all
eu to usando o wamp mas acho q o xamp é a mesma coisa
Cara fiz essas alterações mais ainda deu um erro.. ele pegou o log.i tanto do try como do catch..
N consegui descobrir qual caractere ilegal na url onde esse erro esta apontando
la no mysql.java vc coloca assim no executaHttpGet
HttpClient client = getHttpclient();
String url1 = url.replaceAll(" ", "%20");
HttpGet httpGet = new HttpGet(url1);
httpGet.setURI(new URI(url1));
cara fiz as alterações, no emulador está replicando certinho agora
porém no celular está ocorrendo este erro:
Erro.android.os.NetworkOnMainThreadException
o mesmo erro tava acontecendo antes no emulador daí criei um projeto no android 2.2 e ´pelo menos no emulador tá dando certo .. so falta no celular agora..
ola rodrigo
depois dessa linha aki
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tu coloca essa linha aki
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Esse StrictMode é o que msm? aqui dá erro e não da nem pra importar
coloca assim
import android.os.StrictMode;
StrictMode é uma ferramenta de desenvolvimento que detecta coisas que você poderia estar fazendo por acidente e os leva até a sua atenção para que você possa corrigi-los. Ao manter o thread principal do aplicativo responsivo, você também evitar diálogos ANR de ser mostrado para os usuários.
aqui não tem esse StrictMode para importar nao .. a unica que tem e StrictMath. Não precisa importar nenhuma biblioteca não?
nao... ela ja vem no android.... muito estranho ...
.... para evitar que a mesma thread que esta associada a interface grafica seja utilizada vc deve criar uma outra thread
não no mysql.java mas a parte do cadastro.java e etc...
aqui neste artigo é ensinado como fazer uma thread , Asynctask......
http://vogella.com/tutorials/AndroidBackgroundProcessing/article.html
pode fazer ou com um ou com outro ....
Cara ainda não consegui fazer pra dar certo.. Tu tem aquele meu projeto ainda? Se tiver, tem como tu testar essas funcionalidades ae pra ver c ele pega no cel?
E aí cara você fez o teste? To precisando bastante dessa integração com o mysql para um aplicativo que estarei fazendo. Como te falei ele só tá rodando no emulador do android, e não no celular
ola Rodrigo....
toda tela q tiver conexao na internet tu coloca numa thread....
pq esse erro dá no celular pq ele ta sem thread...
tem esses dois exemplos aki q vao rodar no teu celular
http://codeoncloud.blogspot.com.br/2013/07/android-mysql-php-json-tutorial.html
http://javapapers.com/android/using-database-from-an-android-application/
nesses dois tem Asyntask , so naum tem o crud completo mas tem o select e o insert e pelo insert da p vc fazer o delete e o update
Estou fazendo o curso agora e estou com um problema na REPLICAÇÃO, o script PhP funciona, está inserindo no BD e retorna Y, só que a aplicação não apaga da lista de vendas. alguém pode me ajudar?
package br.com.kwd2.vendas;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
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;
public class ExportarVendasService extends Service implements Runnable {
public void onCreate() {
new Thread(ExportarVendasService.this).start();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@SuppressWarnings("unused")
public void run() {
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM vendas", null);
int totalDB = cursor.getCount();
int totalReplicado = 0;
// strURL.append(URLEncoder.encode(cursor.getString(cursor.getColumnIndex("nome_cliente")))); usa-se no caso de conter mais de uma palavra VARCHAR
while(cursor.moveToNext()){
StringBuilder strURL = new StringBuilder();
strURL.append("http://agedistribuidora.com.br/vendas/inserir.php?produto=");
strURL.append(cursor.getInt(cursor.getColumnIndex("produto")));
strURL.append("&preco=");
strURL.append(cursor.getDouble(cursor.getColumnIndex("preco")));
strURL.append("&latitude=");
strURL.append(cursor.getDouble(cursor.getColumnIndex("la")));
strURL.append("&longitude=");
strURL.append(cursor.getDouble(cursor.getColumnIndex("lo")));
Log.d("ExportarVendasService", 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("vendas", "_id=?", new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado ;
Log.d("ExportarVendasService", "OK");
}
} catch(Exception ex){
Log.d("ExportarVendasService", ex.getMessage());
}
}
db.close();
// if(totalDB == totalReplicado){
//}
}
}
Ola Emanuel ...
vc fez conforme o professor explica??
Sim, também conferi com o arquivo baixado do site, tudo funciona, apenas não exclui a listagem de vendas.
mostra o logcat
Log.d("ExportarVendasService", "OK");
André,
o problema era que eu tinha colocado um comentário no início do inserir.php e não sabia que influenciava, agora roda normal no emulador com o IP do Xampp:
strURL.append("http://192.168.254.102/vendas/inserir.php?produto=");
Como faço para que rode no meu servidor web, pois quando coloco o domínio dá erro, exemplo abaixo:
strURL.append("http://agedistribuidora.com.br/vendas/inserir.php?produto=");
q erro esta dando
poste o logcat ..
Este é o LogCat quando uso:
strURL.append("http://agedistribuidora.com.br/vendas/inserir.php?produto=");
Inseri no banco web MySql, mas não deleta do banco SQLite android.
04-09 14:54:00.137: D/ExportarVendasService(771): http://agedistribuidora.com.br/vendas/inserir.php?produto=1&preco=2.0&latitude=-8.26975&longitude=-35.619
04-09 14:54:00.786: D/ExportarVendasService(771): http://agedistribuidora.com.br/vendas/inserir.php?produto=2&preco=3.5&latitude=-8.26975&longitude=-35.619
04-09 14:54:01.067: D/ExportarVendasService(771): http://agedistribuidora.com.br/vendas/inserir.php?produto=1&preco=2.0&latitude=-8.26975&longitude=-35.619
04-09 14:54:01.357: D/ExportarVendasService(771): http://agedistribuidora.com.br/vendas/inserir.php?produto=2&preco=3.5&latitude=-8.26975&longitude=-35.619
04-09 14:54:02.566: D/dalvikvm(148): GC_CONCURRENT freed 402K, 18% free 7613K/9223K, paused 7ms 9ms
04-09 14:54:26.577: I/ActivityManager(93): START {cmp=br.com.kwd2.vendas/.ListarVendasActivity} from pid 771
04-09 14:54:26.587: W/WindowManager(93): Failure taking screenshot for (130x195) to layer 21010
04-09 14:54:27.131: I/WindowManager(93): createSurface Window{4131bca0 br.com.kwd2.vendas/br.com.kwd2.vendas.ListarVendasActivity paused=false}: DRAW NOW PENDING
04-09 14:54:27.222: D/dalvikvm(771): GC_CONCURRENT freed 242K, 6% free 7033K/7431K, paused 8ms 23ms
04-09 14:54:27.926: I/ActivityManager(93): Displayed br.com.kwd2.vendas/.ListarVendasActivity: 1s312ms
Este é o LogCat quando uso:
strURL.append("http://192.168.254.102/vendas/inserir.php?produto=");
Funciona tudo perfeitamente.
04-09 14:58:31.227: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=1&preco=2.0&latitude=-8.26975&longitude=-35.619
04-09 14:58:31.507: D/ExportarVendasService(820): OK
04-09 14:58:31.507: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=2&preco=3.5&latitude=-8.26975&longitude=-35.619
04-09 14:58:31.878: D/ExportarVendasService(820): OK
04-09 14:58:31.887: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=1&preco=2.0&latitude=-8.26975&longitude=-35.619
04-09 14:58:31.987: D/ExportarVendasService(820): OK
04-09 14:58:31.987: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=2&preco=3.5&latitude=-8.26975&longitude=-35.619
04-09 14:58:32.096: D/ExportarVendasService(820): OK
04-09 14:58:32.106: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=1&preco=2.0&latitude=-8.26975&longitude=-35.619
04-09 14:58:32.217: D/ExportarVendasService(820): OK
04-09 14:58:32.217: D/ExportarVendasService(820): http://192.168.254.102/vendas/inserir.php?produto=2&preco=3.5&latitude=-8.26975&longitude=-35.619
04-09 14:58:32.366: D/ExportarVendasService(820): OK
04-09 14:58:32.566: D/dalvikvm(820): GC_CONCURRENT freed 279K, 6% free 6992K/7431K, paused 7ms 29ms
04-09 14:58:33.137: D/dalvikvm(148): GC_CONCURRENT freed 405K, 19% free 7536K/9223K, paused 9ms 8ms
04-09 14:58:39.267: I/ActivityManager(93): START {cmp=br.com.kwd2.vendas/.ListarVendasActivity} from pid 820
04-09 14:58:39.277: W/WindowManager(93): Failure taking screenshot for (130x195) to layer 21010
04-09 14:58:39.637: I/WindowManager(93): createSurface Window{41370518 br.com.kwd2.vendas/br.com.kwd2.vendas.ListarVendasActivity paused=false}: DRAW NOW PENDING
04-09 14:58:40.126: I/ActivityManager(93): Displayed br.com.kwd2.vendas/.ListarVendasActivity: 824ms
strURL.append("http://agedistribuidora.com.br/vendas/inserir.php?produto="); Servidor web [DÁ ERRO]
strURL.append("http://192.168.254.102/vendas/inserir.php?produto="); Local através do Xampp [FUNCIONA]
Está parando nesta linha do código, qual relação de erro entre as duas formar de chamar o inserir.php citada acima, que causam este erro?
if(linhaRetorno.equals("Y")){
db.delete("vendas", "_id=?", new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado ;
Log.d("ExportarVendasService", "OK");
}
No Status da Replicação recebo:
"Status Replicação", "A replicação não foi feita com sucesso, total: " totalReplicado " de " totalDB
"Status Replicação", "A replicação não foi feita com sucesso, total: "0" de " totalDB
pegue esse exemplo...
http://rlsystem.com.br/forum/disco/uploads/1643a197e1720e3e8c5760f06e04f35a-ExemploMysql.zip
Também estou com erro de enviar os dados para Mysql.
TABELA MYSQL
[SQL]
CREATE TABLE `vendas` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`produto` INT(11) UNSIGNED NULL DEFAULT NULL,
`preco` DOUBLE NULL DEFAULT NULL,
`latitude` DOUBLE NULL DEFAULT NULL,
`longitude` DOUBLE NULL DEFAULT NULL,
`nome_vendedor` VARCHAR(50) NULL DEFAULT NULL,
`nome_cliente` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
[/SQL]
package br.com.rptec.vendas;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
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;
public class ExportaVendasService extends Service implements Runnable {
public void onCreate(){
new Thread(ExportaVendasService.this).start();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void run() {
SQLiteDatabase db = openOrCreateDatabase("vendas_nova.db", Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM vendas ", null);
int totalDB = cursor.getCount();
int totalReplicado = 0;
while(cursor.moveToNext()){
StringBuilder strUrl = new StringBuilder();
strUrl.append("http://10.1.6.136/venda/insert.php");
strUrl.append("?produto=");
strUrl.append(cursor.getInt(cursor.getColumnIndex("produto")));
strUrl.append("&preco=");
strUrl.append(cursor.getDouble(cursor.getColumnIndex("preco")));
strUrl.append("&latitude=");
strUrl.append(cursor.getDouble(cursor.getColumnIndex("la")));
strUrl.append("&longitude=");
strUrl.append(cursor.getDouble(cursor.getColumnIndex("lo")));
Log.d("ExportarVendasService", strUrl.toString());
try{
URL url = new URL(strUrl.toString());
HttpsURLConnection http = (HttpsURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader line = new BufferedReader(ips);
String linhaRetorno = line.readLine();
Log.d("ExportarVendasService", linhaRetorno.toString());
if(linhaRetorno.equals("Y")){
Log.d("ExportarVendasService", "id " String.valueOf(cursor.getInt(0)));
db.delete("vendas", "_id=?", new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado ;
Log.d("ExportarVendasService", "OK");
}
}catch(Exception e){
Log.d("ExportarVendasService[11]", e.getMessage());
}
}
db.close();
/*
// TODO Auto-generated method stub
for(int i=0; i< 10000; i ){
try{
Log.d("ExportaVendaService",String.valueOf(i));
Thread.sleep(100);
} catch(Exception ex){
Log.d("ExportaVendaService",ex.getMessage());
}
}
*/
}
}
Adicionei e importei as dependência funciono
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();