Manipulando dados do banco no Android

Fala, galera!

Hoje vamos continuar o tutorial anterior: vamos aprender a alterar e excluir registros, manipulando dados do banco no Android.

Se você ainda não viu o último tutorial da série, clique no link a seguir: banco de dados em Android. Se você continua é preguiçoso e apenas baixou o projeto, importe-o para sua workspace. Para tal, vá em File → Import… → Existing Projects into Workspace, dentro de General.

Manipulando dados do banco no Android

No tutorial anterior modificamos nosso projeto para que os dados fossem salvos diretamente no SQLite. Os princípios para alterar e excluir os dados são os mesmos: o próprio SQLite possui métodos próprios para gerenciar os dados, e são bem simples de entender.

Vamos adicionar dois novos métodos na nossa classe Dados. Um será responsável por alterar os dados, e o outro fará a exclusão. O método para alterar receberá como parâmetros os dados do carro em questão, além do seu ID. Já o método de exclusão receberá apenas o ID.

public void alterar(String veiculo, String ano, String cor, int id) {
    ContentValues valores = new ContentValues();
    valores.put("veiculo", veiculo);
    valores.put("ano", ano);
    valores.put("cor", cor);
    getWritableDatabase().update("carros", valores, "id="+id, null);
}
 
public void excluir(int id) {
    getWritableDatabase().delete("carros", "id="+id, null);
}

Agora temos que alterar nossa lista, para que ao clicar em algum item seja exibido um box perguntando para o usuário se ele deseja alterar ou excluir o registro. Porém, antes de implementar o box, precisamos adicionar o ID dos registros no nosso adaptador. Ele não será exibido em nenhum lugar, mas é essencial para manipular os registros. Vamos então alterar o método atualizaLista().

private void atualizaLista() {
    adaptador.clear(); // Limpa o adaptador para evitar duplicados
    carros = dados.obterTodos();
    carros.moveToFirst(); // Move o ponteiro para o primeiro registro
    while (!carros.isAfterLast()) {
        String veiculo = carros.getString(1).toString();
        String ano = carros.getString(2).toString();
        String cor = carros.getString(3).toString();
        String id = String.valueOf(carros.getInt(0));
        String[] c = { veiculo, ano, cor, id }; // Cria um array com os
                                                // dados do carro
        adaptador.add(c); // Adiciona no ArrayList
        carros.moveToNext(); // Move o ponteiro para o próximo registro
    }
    adaptador.notifyDataSetChanged(); // Atualiza a lista
}

É necessário também adicionarmos um novo atributo do tipo int. Ele servirá para armazenamento do ID do carro que está sendo alterado. Ele está com valor -1 para que saibamos quando um registro está sendo alterado.

int id = -1;

Agora sim, vamos alterar a ação ao clicar em algum item da lista.

// Ao clicar na linha, será exibida um box perguntando ao
// usuário se ele deseja alterar ou excluir o registro. Coloque seu
// código dentro do método onClick().
linha.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        new AlertDialog.Builder(ListaCarros.this)
                       .setTitle("Tutorial YESbr")
                       .setCancelable(false)
                       .setMessage("Selecione uma ação:")
                       .setPositiveButton("Alterar",
                           new DialogInterface.OnClickListener() {
                               public void onClick(
                                   DialogInterface dialog,
                                   int which) {
                                       // Ao clicar em alterar, os dados do
                                       // registro em questão
                                       // serão passados para os campos de
                                       // texto
                                       veiculo.setText(item_linha[0]);
                                       ano.setText(item_linha[1]);
                                       cor.setText(item_linha[2]);
                                       id = Integer.parseInt(item_linha[3]);
                                   }
                               })
                       .setNegativeButton("Excluir",
                           new DialogInterface.OnClickListener() {
                               public void onClick(
                                   DialogInterface dialog,
                                   int which) {
                                       // Ao clicar em excluir, o registro
                                       // é excluído do banco de dados e
                                       // atualiza a lista
                                       dados.excluir(Integer
                                           .parseInt(item_linha[3]));
                                       atualizaLista();
                                   }
                               }).show();
    }
});

Por último, temos que alterar a ação do botão salvar para que seja chamado o método correto em caso de inserção ou alteração de registro.

salvar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (id == -1) {
            dados.inserir(veiculo.getText().toString(), ano.getText()
                .toString(), cor.getText().toString());
        } else {
            dados.alterar(veiculo.getText().toString(), ano.getText()
                .toString(), cor.getText().toString(), id);
            id = -1; // reseta o ID
        }
        atualizaLista();
    }
});

Finish him! Rode o projeto e veja como ficou.

Manipulando dados do banco no Android

Notas Importantes

1- Anteriormente, nosso projeto não iniciava com a lista já preenchida caso existissem dados salvos no banco. Para fazê-lo, bastaria chamar o método atualizaLista() logo após definirmos o adaptador na nossa lista, dentro do método onCreate().

2- Ao salvar ou alterar algum registro, os campos do formulário ainda continuavam preenchidos. A partir de agora, eles serão “zerados”.

Considerações Finais

Agora já conhecemos as quatro operações básicas do SQLite: selecionar, inserir, alterar e excluir. No próximo tutorial vamos aprender a exibir mensagens na tela do smartphone, informando ao usuário o resultado de uma operação.

Baixe o projeto atual aqui.

Até lá!

Por que abrir uma loja virtual?

Loja virtual é um site e-commerce que possibilita que os clientes façam a visualização e a escolha de produtos, lançando-os em um carrinho de compras, onde a confirmação da compra e pagamento são efetuados em um processo totalmente online e rápido.

O investimento inicial é menor em relação às que necessitam de um espaço físico e ainda assim funciona 24 horas por dia. Oferecem serviços personalizados conforme as características do consumidor. O mercado virtual aproxima oportunidades entre pequenas, médias e grandes empresas e permite melhor mensuração e gerenciamento das informações sobre o mercado consumidor.loja-virtual

Com as inovações tecnológicas, as lojas virtuais podem ter layouts personalizados, cuja função é despertar a atenção, o interesse e a identificação do cliente com a plataforma de e-commerce, uma vez que os layouts customizados tornam a loja diferenciada em relação às outras. Também existe a integração com as redes sociais, permitindo assim a participação de clientes através de blogs e mensagens instantâneas para a divulgação do sistema.

Com o constante crescimento do mercado virtual brasileiro e a ampliação no volume de e-consumidores, possuir uma loja virtual significa investir em um empreendimento duradouro, com grandes perspectivas de sucesso, sendo suas expectativas atingidas a cada ano.

 

E você já possui uma Loja Virtual?loja-virtual-aberta-24h

– Funcionamento 24 horas, 7 dias por semana, 365 dias por ano;
– Venda sem fronteiras: o cliente pode estar em qualquer lugar do mundo;
– Fortalecimento da marca da empresa
– Canal democrático: pequenas empresas podem competir de igual para igual com grandes corporações;

Veja mais alguns dados sobre a importância que uma loja virtual poderá ter para o seu negócio segundo a Cartilha do Sebrae. Se você acha que as pessoas têm receio de comprar pela internet, saiba que o comércio eletrônico cresce muito no Brasil:

– O Brasil movimentou R$ 15 bilhões no comércio online em 2010, 40% a mais que o ano anterior;
­ O Natal de 2010 movimentou R$ 2,2 bilhões em compras pela internet;
­ O valor médio das compras foi de R$ 370;
­ 70% dos internautas brasileiros que acessam a Web diariamente estão nas classes C e D;
– 94% dos internautas pesquisam sobre produtos e serviços antes de comprar. Se a sua empresa ou o seu produto não estiver presente na internet, há uma boa chance do seu cliente (ou potencial cliente) comprar do concorrente;

Ficou interessado? Solicite um Orçamento.

Introdução a mapKit com objective-C

Bom pessoal neste tutorial iremos ensinar a colocar uma annotation no mapa, basicamente iremos usar isso para definir algum ponto no mapa usando o componente mapKit.

Bom antes de começarmos nosso código propriamente dito precisaremos pedir permissão do usuário para acessar o mapa.

O requerimento das permissões mudou um pouco no IOS 8 para fazer o requerimento precisamos adicionar uma linha na aba “info” de nosso projeto.

mapkit-Foto1

NSLocationWhenInUseUsageDescription

Com esta linha nosso app irá perguntar para o usuário se ele pode fazer uso do mapa, caso o usuário concorde o aplicativo continuará o funcionamento.

Para usarmos o mapa marcando o ponto onde estamos precisaremos de duas bibliotecas a mapKit e CoreLocation.

mapkit-Foto2

Vamos para nossa viewController nossa tela será bem simples, vamos colocar apenas um mapa nela e ligar a nosso .h, nosso arquivo.h ainda precisa de 2 delegates o do mapkit e o userLocation, em nosso .h também precisamos criar um CLLocationManager que será nossa ferramenta para gerenciar a localização do usuário. No fim nosso arquivo viewController.h fica assim:

#import <UIKit/UIKit.h>

#import <CoreLocation/CoreLocation.h>

#import <MapKit/MapKit.h>

@interface ViewController : UIViewController <MKMapViewDelegate,CLLocationManagerDelegate>

@property (strong, nonatomic) CLLocationManager *gerenciadorDeGPS;

@property (weak, nonatomic) IBOutlet MKMapView *mapa;

@end

Agora precisamos partir para nosso ViewController.m onde vamos realmente trabalhar com nosso mapa, como estamos fazendo apenas um tutorial bem simples vamos criar o seguinte código dentro de nosso ViewDidLoad, precisaremos iniciar nosso gerenciadorDeGps requer de nosso usuário a permissão de usar sua localização e começar a “seguir” nosso usuário. Vamos também implementar nosso delegate, e mostrar a localização do usuário.

self.mapa.delegate = self;

self.mapa.showsUserLocation = YES;

// iniciando alocando nosso gerenciador que usaremos para pegar a poisção do usuário

self.gerenciadorDeGPS = [[CLLocationManager alloc]init];

[self.gerenciadorDeGPS requestWhenInUseAuthorization];

[self.gerenciadorDeGPS startUpdatingLocation];

Agora vamos dizer para nosso mapa qual a região nosso mapa vai representar para isso precisamos da latitude e da longitude em que nosso usuário está, por isso criamos nosso gerenciadorDeGPS.

self.mapa.region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(self.gerenciadorDeGPS.location.coordinate.latitude, self.gerenciadorDeGPS.location.coordinate.longitude), 250, 250);

Com essa linha definimos a latitude e a longitude, e também nosso zoom (no caso usamos 250 por 250, porem você poderá brincar com ele a vontade dependendo da necessidade do app).

Vamos por fim fazer uma annotation que seria uma pequena anotação no mapa, ou uma marcação de um ponto especifico, também precisamos da latitude e da longitude do ponto a ser mostrado:

MKPointAnnotation *annotation =[[MKPointAnnotation alloc]init];

annotation.coordinate = CLLocationCoordinate2DMake(self.gerenciadorDeGPS.location.coordinate.latitude, self.gerenciadorDeGPS.location.coordinate.longitude);

Bom para evitar estender muito o tutorial usei a mesma localização do ponto anterior porem você poderá escolher outra latitude e longitude.

Por fim vamos dar um titulo para nosso ponto e também colocar no mapa.

annotation.title = [NSString stringWithFormat:@”Onde Estou”];

[self.mapa addAnnotation:annotation];

No fim nosso método ViewDidLoad ficou assim:

– (void)viewDidLoad {

[super viewDidLoad];

self.mapa.delegate = self;

self.mapa.showsUserLocation = YES;

// iniciando alocando nosso gerenciador que usaremos para pegar a poisção do usuário

self.gerenciadorDeGPS = [[CLLocationManager alloc]init];

[self.gerenciadorDeGPS requestWhenInUseAuthorization];

[self.gerenciadorDeGPS startUpdatingLocation];

// iniciando nosso mapa na posição em que estamos

self.mapa.region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(self.gerenciadorDeGPS.location.coordinate.latitude, self.gerenciadorDeGPS.location.coordinate.longitude), 250, 250);

MKPointAnnotation *annotation =[[MKPointAnnotation alloc]init];

annotation.coordinate = CLLocationCoordinate2DMake(self.gerenciadorDeGPS.location.coordinate.latitude, self.gerenciadorDeGPS.location.coordinate.longitude);

annotation.title = [NSString stringWithFormat:@”Onde Estou”];

[self.mapa addAnnotation:annotation];

}

Bom pessoal por hoje é isso foi um tutorial bem rápido só para dar uma introdução a ferramenta, poderemos em outros tutorias continuando com a ferramenta.

Banco de Dados em Android

Banco de Dados em AndroidFala galera!

Hoje vamos aprender a salvar dados de um formulário no banco de dados em Android! Com isso, sua aplicação poderá salvar informações, e um novo leque de possibilidades de aplicações foi aberto!! (lista de contatos, informações pessoas, etc.)

Se você ainda não viu o último tutorial da série, aproveite e aprenda um pouco mais sobre como criar um ListView personalizado no Android. Se você continua é preguiçoso e apenas baixou o projeto, importe-o para sua workspace. Para tal, vá em File → Import… → Existing Projects into Workspace, dentro de General.

Banco de dados em Android

Nativamente, o Android disponibiliza uma forma de persistir dados utilizando o SQLite. Ele é leve e muito fácil de utilizar.

Se você não tem experiência com SQL, não se preocupe: o aprendizado é fácil e rápido, e logo você estará entendido dos conceitos.

Inicialmente, vamos criar uma classe chamada Dados, que irá estender SQLiteOpenHelper.

public class Dados extends SQLiteOpenHelper {

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
 
}

Ao fazer o procedimento, será acusado um erro: o construtor da classe não foi criado. O construtor serve para acessar os métodos desta classe. Para cria-lo, antes vamos definir dois atributos privados, estáticos e finais NOME_BANCO e VERSAO_SCHEMA. Como o próprio nome diz, estes atributos são referentes ao nome e versão do schema do banco de dados que vamos criar.

private static final String NOME_BANCO = "listacarros.db";
private static final int VERSAO_SCHEMA = 1;

Feito isso, vamos instanciar nosso construtor da classe (que necessita de um parâmetro do tipo Context), chamando o método super() e passando os atributos necessários.

public Dados(Context context) {
    super(context, NOME_BANCO, null, VERSAO_SCHEMA);
}

Depois de criar o construtor, vamos modificar o método onCreate(). Nesse método deverão ser passados os SQLs de criação das tabelas. No nosso caso, vamos criar apenas uma tabela chamada carros.

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE carros("
                                   + "id INTEGER PRIMARY KEY AUTOINCREMENT, veiculo TEXT, ano TEXT, cor TEXT);");
}

O método onUpgrade() não será modificado, pois ele somente é chamado quando há uma atualização. Porém, ele não pode ser apagado, pois é obrigatório na classe.

O próximo passo será criar um método que irá salvar os dados no banco. Este método irá receber como parâmetros os dados do carro em questão.

public void inserir(String veiculo, String ano, String cor) {
   ContentValues valores = new ContentValues();
   valores.put("veiculo", veiculo);
   valores.put("ano", ano);
   valores.put("cor", cor);
   getWritableDatabase().insert("carros", null, valores);
}

Precisamos também criar um método para recuperar todos os carros cadastrados no banco.

public Cursor obterTodos() {
    return getReadableDatabase().rawQuery(
                                   "select * FROM carros ORDER BY veiculo", null);
}

OBS: Corrija todos os erros de importação com Ctrl + Shift + O.

Vamos agora modificar nossa classe principal ListaCarros, alterando como a listagem é recuperada e modificando a ação do botão Salvar.

Primeiro, vamos criar um atributo do tipo Dados, nossa classe previamente criada.

Dados dados;

No método onCreate(), vamos chamar o construtor da classe Dados passando o contexto da classe ListaCarros (atributo this).

dados = new Dados(this);

Feito isto, estamos prontos para salvar os dados no banco!

Modifique a ação do botão salvar de maneira que os dados sejam armazenados no banco de dados através do método inserir() que criamos. Vamos também chamar o método atualizaLista(), o qual falaremos a seguir.

salvar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        dados.inserir(veiculo.getText().toString(), ano.getText().toString(), cor.getText().toString());
    }
});

Vamos agora modificar nossa lista. De início, criar um novo atributo chamado carros do tipo Cursor, que servirá para armazenar todos os registros do banco de dados.

Cursor carros;

Finalmente, vamos criar o método atualizaLista(), que será responsável por popular nossa lista. Nele, vamos salvar o retorno do método obterTodos() da classe Dados. Logo após, vamos percorrer todos os registros e inserir cada um em nosso adaptador. Só não se esquece de limpar o adaptador para não adicionar registros duplicados.

private void atualizaLista() {
    adaptador.clear(); // Limpa o adaptador para evitar duplicados
    carros = dados.obterTodos();
    carros.moveToFirst(); // Move o ponteiro para o primeiro registro
    while (!carros.isAfterLast()) {
        String veiculo = carros.getString(1).toString();
        String ano = carros.getString(2).toString();
        String cor = carros.getString(3).toString();
        String[] c = { veiculo, ano, cor }; // Cria um array com os dados do carro
        adaptador.add(c); // Adiciona no ArrayList
        carros.moveToNext(); // Move o ponteiro para o próximo registro
    }
    adaptador.notifyDataSetChanged(); // Atualiza a lista
}

Já era! Execute seu projeto e tenha sonhos maravilhosos!

Banco de Dados em Android

Considerações Finais

Muito simples, não? Com pouco trabalho, nossa aplicação ficou um pouco mais interessante. Agora temos banco de dados! No próximo tutorial, vamos aprender a editar e excluir os registros do banco de dados.

Baixe o projeto atual aqui.

Falou, galera!

Loja Virtual Magento

O Magento é uma plataforma CMS líder em lojas virtuais segundo dados recentes do Google Trends. Ela oferece recursos ótimos e flexíveis, administração intuitiva, facilidade na otimização para resultados de busca (SEO), gerenciamento de catálogos e conteúdo.

Projetado para ser totalmente escalável tanto backend e frontend para otimizar a venda online e aumentar a experiência de compras de seus clientes.

Customizamos e personalizamos temas Magento de acordo com a sua necessidade, por isso cada uma de nossas lojas possui características próprias, buscando atender o seu modelo de negócio.

A plataforma magento nos permite trabalhar com as mais variadas formas de pagamento existentes no mercado, como Intermediadores PagSeguro, Bcash e Gatways de pagamento Cielo e Moip.

Você poderá visualizar relatórios detalhados de toda sua operação e conseguir ter um acompanhamento de carrinhos abandonados, termos mais buscados, produtos mais acessados, estoque, pedidos entre outras ferramentas de marketing.

Tenha sua loja virtual com todo o potencial do Magento Responsivo em diversos dispositivos móveis como celulares e tablets. Assim todos poderão comprar seus produtos de qualquer lugar a qualquer momento.

Diferenciais Magento

– Criação de Loja Virtual Magento
– Otimização (Seo) Loja Virtual Magento
– Otimização de Desempenho Loja Virtual Magento
– Migração de Servidor Loja Virtual Magento
– Instalação de Loja Virtual Magento
– Instalação de Extensões e Módulos Magento

Ficou interessado? Solicite um Orçamento.