Programas, Dinheiro OnLine, Ebooks e JoGos OnLines

HTML 5 Web banco de dados SQL

15/02/2010 15:25

HTML 5 Web banco de dados SQL

Uncategorized em 12 de fevereiro de 2010 8 Comentários
HTML 5 tem uma torrente de novas APIs e emocionante, que irá eventualmente permitir que os desenvolvedores da Web para criar aplicações mais ricas e atraentes. Talvez o mais útil é o HTML 5 é novo "Web Storage" API. Nós cobrimos local e armazenamento de sessão no passado, ir tão longe como a persistência de objetos simples usando essas APIs.
Local e armazenamento de sessão é grande para armazenar qualquer coisa de fraco valor da chave simples (como configurações da aplicação) ou objetos simples (como a aplicação do estado), mas não está classificado para outra coisa senão trivial quantidades de dados relacionais. Isto é onde HTML 5's Web "banco de dados SQL" API entra para jogar.
Uma palavra de advertência, o resto deste documento requer uma compreensão saudável de JavaScript e OOP (particularmente anônimo funções internas) e SQL.

Abrindo uma conexão

Para abrir uma conexão que executar o seguinte:
    db = OpenDatabase ( "Todo", "0,1", "A lista de itens a serem feitos.", 200000);

Isto cria o objeto de banco db com o título ToDo, Um número de versão 0.1. db tem uma descrição e tamanho aproximado também. A descrição poderia pode ser utilizado pelo agente para comunicar o fim do banco de dados com o usuário. O tamanho permite que o agente de usuário para tentar anular o armazenamento suficiente para o seu conteúdo. Este espaço é flexível quando necessário, portanto não há necessidade de tentar estimar o quanto um usuário pode ser autorizado a usar.

Para testar a conexão foi criada com sucesso, você pode tentar verificar se o objeto de banco nulo se:
if (db!)
alert ( "Falha ao conectar ao banco de dados.");
Nunca assuma que a conexão foi bem sucedida, mesmo que tenha sido com o usuário em particular no passado. Há uma série de razões pelas quais uma conexão pode falhar. Talvez o agente do usuário negou-lhe o acesso ao API por razões de segurança, talvez o dispositivo de armazenamento é limitada. Com a vibrante e rápida evolução da paisagem de agentes de usuário em potencial é simplesmente imprudente fazer suposições de sua máquina do usuário, o software ou as suas capacidades. Por exemplo, o usuário pode ter apenas megabytes de dados à sua disposição se, por exemplo, estão usando um dispositivo portátil.

Execução de consultas

Para executar uma consulta que você use o database.transaction () função. Esta função tem um único argumento, uma função que toma conta de executar a consulta.

Essa função (muitas vezes anônimo) tem um único argumento do tipo transation.
    db.transaction (
        função (TX) (
A operação tem uma função, ExecuteSQL. Esta função recebe quatro argumentos, uma string denotando a consulta, uma matriz de seqüências de inserção no lugar de pontos de interrogação na consulta (bem como de Java declaração preparada), uma função para executar em caso de sucesso e uma função para concluir em caso de falha.
    tx.executeSql ( "SELECT COUNT (*) De todo", [], function (result) ()
        função (tx de erro, ){});

Em caso de sucesso

Quando a consulta é executada com êxito, o aplicativo pode saltar para uma consulta com um par de argumentos, o transação e resultados coletados. Isso seria realmente perfeito para a retransmissão de dados para o usuário, por exemplo, exibindo uma lista de Todos. Mais sobre isso mais tarde.

Em caso de falha

Isso é chamado se a consulta não executar. Porque você é passado o transação objeto como o primeiro argumento da fucntion's você pode executar consultas mais no caso de erro. Por exemplo, se a consulta não pode ser executado porque a tabela está em falta, este é o momento ideal para realmente construir a tabela e tentativa de re-executar a instrução. Você pode obter informações (incluindo uma descrição) sobre o erro do segundo argumento da função.

Um exemplo

Vamos dizer que queria usar o exemplo acima. Nós queríamos pesquisar o banco de dados para uma tabela específica, se essa tabela não existir, criamos ele.
Neste exemplo, teríamos que chamar db.transaction () com ele é um argumento de função. Dentro deste argumento, queremos chamar tx.executeSql (). Se este succedes vamos fazer nada (portanto, um null argumento). Caso contrário, queremos levar a operação passou a não funcionar e chamar tx.executeSql () mais uma vez. Desta vez, com a criação da consulta.
    db.transaction (
        função (TX) (
            tx.executeSql ( "SELECT COUNT (*) De todo", [], null,
                função (tx de erro) (
                    tx.executeSql ( "CREATE TABLE ToDo (id original real, texto da etiqueta, carimbo do tempo real)", [], null, null);
                }
            );
        }
    );
Pode ser difícil conciliar todos estes métodos internos de modo que você pode querer criar funções externamente do db.transaction () chamar. Por exemplo, poderíamos fazer a função de auto erro contido e chamá-lo "createToDoTable ()“.

Inserindo

Para permitir o código mais claro e mais seguro na Web banco de dados SQL API permite que você forneça uma matriz de cadeias para o transaction.executeSql () função para indicar variação na instrução SQL chamado. Isso é demonstrado no seguinte código:
    db.transaction (
        função (TX) (
            tx.executeSql ( "INSERT INTO ToDo (label, timestamp) values (??)", [label, new Date () getTime. ()], null, null);
        }
    );
Neste exemplo, a dois pontos de interrogação no primeiro argumento, são substituídos por seus respectivos pares na matriz que se segue. O primeiro é o rótulo de atribuir à tarefa (talvez uma variável é definida no código anterior) e um timestamps gerados como a função é chamada.
Você poderia Emagine como a consulta é executada, ela se parece mais com isto:
    INSERT INTO ToDo (label, timestamp) values ( "Test", 1265925077487)

Trabalhando com resultados

O objeto resultado da função sucesso contém uma coleção ou linhas. Cada linha representa um resultado. Esse resultado foi um conjunto de valores que lhe são atribuídas representando valores para cada coluna no banco de dados para que determinado resultado. Você pode acessar uma linha chamando result.rows.item (i) onde i é o índice da linha que deseja consultar. Para selecionar um valor de uma linha que passe a linha de uma matriz seqüência de índice que denota o estilo de coluna que você deseja inspecionar. Por exemplo, se quiséssemos o rótulo de coluna que eu chamaria row [ 'label'].
A impressão que se segue descreve os resultados de uma consulta usando o objeto do resultado:
    db.transaction (
        função (TX) (
            tx.executeSql ( "SELECT * FROM ToDo", [],
                function (TX, result) (
                    for (var i = 0; i 
                        document.write ( '' + result.rows.item (i) [ 'label'] + ' 
');
                    }
                ), Null);
            }
        );

Conclusão

E assim termina o nosso apito de parada da turnê, o que poderia ser, uma API incrivelmente útil e flexível. Tenha em mente que a Web Bancos de dados SQL deve ser usado somente se estritamente necessário. Não apenas devido à sua sobrecarga técnica, mas porque introduzem uma boa dose de complexidade ao seu código. Na maioria dos casos de armazenamento de armazenamento local ou a sessão pode fazer, especialmente quando você pode persistir estados objeto.
Tendo dito isso você pode obter uma grande quantidade de funcionalidade destas APIs. Tenho certeza de que, ao longo dos anos, alguns aplicativos incrível pode ser construída em torno desta API. Afinal, cliente de email do Google Mobile já usa tecnologia semelhante para reduzir as chamadas para as redes celulares de alta latência.
Você pode encontrar mais informações sobre o HTML 5 aqui e Web bancos de dados SQL aqui. Artigos anteriores temos escrito em HTML cinco podem ser encontrados aqui (local e armazenamento de sessão) e aqui (objeto de persistência usando locais e de armazenamento de sessão).
Voltar

Pesquisar no site

© 2010 Todos os direitos reservados.