Na generalidade, onde é que as aplicações são guardadas. É que não consigo encontrar a que criei em nenhuma pasta para ver a base de dados que é suposto estar criada e que fazendo um trace diz que não existe
On Tue, Jan 22, 2013 at 3:48 PM, Hugo Ferreira <[email protected]>wrote: > Sim, é preciso permissão de leitura/escrita no SD (podes configurar isto > via FB ou via xml). > > > 2013/1/22 Luis Costa <[email protected]> > >> Boas, continuando neste tópico. >> Já tenho a app criada, mas não me está a escrever na BD. É necessário >> algum tipo de permissões no tablet para tal ? >> >> O meu código de mysql: >> >> >> private var sqlc:SQLConnection = new SQLConnection(); >> // sqlc is an SQLStatment which we need to execute our sql commands >> private var sqls:SQLStatement = new SQLStatement(); >> // ArrayCollection used as a data provider for the datagrid. It has to be >> bindable so that data in datagrid changes automatically when we change the >> ArrayCollection >> [Bindable] >> private var dp:ArrayCollection = new ArrayCollection(); >> >> // function we call at the begining when application has finished loading >> and bulding itself >> private function start():void >> { >> // first we need to set the file class for our database (in this >> example test.db). If the Database doesn't exists it will be created when we >> open it. >> var db:File = >> File.applicationStorageDirectory.resolvePath("booksapp.db"); >> // after we set the file for our database we need to open it with our >> SQLConnection. >> sqlc.openAsync(db); >> // we need to set some event listeners so we know if we get an sql >> error, when the database is fully opened and to know when we recive a >> resault from an sql statment. The last one is uset to read data out of >> database. >> sqlc.addEventListener(SQLEvent.OPEN, db_opened); >> sqlc.addEventListener(SQLErrorEvent.ERROR, error); >> sqls.addEventListener(SQLErrorEvent.ERROR, error); >> sqls.addEventListener(SQLEvent.RESULT, resault); >> >> } >> >> private function db_opened(e:SQLEvent):void >> { >> // when the database is opened we need to link the SQLStatment to our >> SQLConnection, so that sql statments for the right database. >> // if you don't set this connection you will get an error when you >> execute sql statment. >> sqls.sqlConnection = sqlc; >> // in property text of our SQLStatment we write our sql command. We >> can also combine sql statments in our text property so that more than one >> statment can be executed at a time. >> // in this sql statment we create table in our database with name >> "test_table" with three columns (id, first_name and last_name). Id is an >> integer that is auto incremented when each item is added. First_name and >> last_name are columns in which we can store text >> // If you want to know more about sql statments search the web. >> sqls.text = "CREATE TABLE IF NOT EXISTS books_table ( id INTEGER >> PRIMARY KEY AUTOINCREMENT, title TEXT,author TEXT,year TEXT, spot TEXT, >> borrowed TEXT, readed TEXT, avaliation TEXT)"; >> // after we have connected sql statment to our sql connection and >> writen our sql commands we also need to execute our sql statment. >> // nothing will change in database until we execute sql statment. >> sqls.execute(); >> //Test on Insert >> sqls.text = "INSERT INTO books_table >> VALUES('11','22','33','44','55','66','77')"; >> sqls.execute(); >> // after we load the database and create the table if it doesn't >> already exists, we call refresh method which i have created to populate our >> datagrid >> refresh(); >> } >> // function to add item to our database >> private function addItem(title:String ,author:String ,year:String , >> spot:String, borrowed:String, readed:String , avaliation:String):void >> { >> // in this sql statment we add item at the end of our table with >> values first_name.text in column first_name and last_name.text for column >> last_name >> sqls.text = "INSERT INTO books_table >> VALUES('"+title+"','"+author+"','"+year+"','"+spot+"','"+borrowed+"','"+readed+"','"+avaliation+"')"; >> sqls.execute(); >> >> refresh(); >> } >> >> // function to call when we want to refresh the data in datagrid >> private function refresh(e:TimerEvent = null):void >> { >> // timer object which we need if sql statment is still executing so >> that we can try again after 10 milliseconds. >> var timer:Timer = new Timer(10,1); >> timer.addEventListener(TimerEvent.TIMER, refresh); >> >> if ( !sqls.executing )// we need to check if our sql statment is >> still executing our last sql command. If so we use Timer to try again in 10 >> milliseconds. If we wouldn't check we could get an error because >> SQLStatment can't execute two statments at the same time. >> { >> // sql statment which returns all the data from our "test_table". >> To retrive only data from first_name and last_name columns we would use >> "SELECT first_name,last_name FROM test_table" >> sqls.text = "SELECT * FROM books_table" >> sqls.execute(); >> } >> else >> { >> timer.start(); >> } >> } >> >> // method that gets called if we recive some resaults from our sql >> commands. >> //this method would also get called for sql statments to insert item and >> to create table but in this case sqls.getResault().data would be null >> private function resault(e:SQLEvent):void >> { >> // with sqls.getResault().data we get the array of objects for each >> row out of our database >> var data:Array = sqls.getResult().data; >> // we pass the array of objects to our data provider to fill the >> datagrid >> dp = new ArrayCollection(data); >> } >> >> // method to remove row from database. >> private function remove(selIndex:Number):void >> { >> // sql statment to delete from our test_table the row that has the >> same number in number column as our selected row from datagrid >> sqls.text = "DELETE FROM books_table WHERE id="+dp[selIndex].id; >> sqls.execute(); >> refresh(); >> } >> // method which gets called when we recive an error from sql connection >> or sql statment and displays the error in the alert >> private function error(e:SQLErrorEvent):void >> { >> >> }// ActionScript file >> >> >> 2013/1/21 Luis Costa <[email protected]> >> >>> São os meus primeiros passos em programar para Android, todos as dicas >>> são bem vindas :-) >>> >>> >>> 2013/1/21 Hugo Ferreira <[email protected]> >>> >>>> OK. >>>> Outra coisa importante a ter em atenção: Cache de dados. >>>> Pequenas tabelas de dados que não sejam alvo de alterações frequentes e >>>> que são de consulta frequente, deverão ficar em memória, poupando o acesso >>>> ao cartão SD, no entanto isto tem de ser feito com peso e medida pois como >>>> bem sabemos, a memória é um recurso escasso :) >>>> >>>> Programar "qualquer um" faz mas desenvolver uma aplicação com pinta :) >>>> (funcionalidades completas e úteis e ao mesmo tempo rápida pode-se tornar >>>> um grande desafio e a cereja no topo de bolo é faze-lo com um código de >>>> fácil legibilidade e manutenção). >>>> >>>> >>>> >>>> No dia 21 de Janeiro de 2013 à36 18:48, Luis Costa < >>>> [email protected]> escreveu: >>>> >>>> É apenas uma biblioteca, mas quando esta app ficar boa depois passo >>>>> para outras secalhar mais pesadas. >>>>> Vou optar por ver como gravar os dados no SQLite. >>>>> >>>>> >>>>> 2013/1/21 Hugo Ferreira <[email protected]> >>>>> >>>>>> Boa tarde Luís. >>>>>> >>>>>> Se queres guardar um grande volume de dados no cartão SD, recomendo o >>>>>> uso do SQLite mas atenção que o acesso ao cartão é lento pelo que aqui >>>>>> toda >>>>>> e qualquer técnica de tunning deverá ser aplicada. >>>>>> >>>>>> Posso te dizer que numa das minhas primeiras aplicações nos >>>>>> marketplaces chegou a demorar mais de 5 segundos ao carregar dados >>>>>> auxiliares no arranque, após a bd ter ganho um grande volume de dados. >>>>>> Após >>>>>> estudar e aplicar todas as técnicas de tunning de sqlite, passou a >>>>>> demorar >>>>>> microsegundos. >>>>>> >>>>>> O Google aqui é teu amigo para descobrires como usar o SQLite e como >>>>>> aplicar estas técnicas logo de ínicio. >>>>>> >>>>>> Se quiseres apenas guardar variáveis (por exemplo para o estado de um >>>>>> jogo), então podes usar um processo menos pesado como o shared object. >>>>>> >>>>>> >>>>>> Cumprimentos, >>>>>> Hugo. >>>>>> >>>>>> >>>>>> No dia 21 de Janeiro de 2013 à44 18:33, Luis Costa < >>>>>> [email protected]> escreveu: >>>>>> >>>>>>> Boas pessoal, >>>>>>> Estou a fazer a minha primeira experiência de aplicação para Android >>>>>>> com Adobe Flash Builder, >>>>>>> Qual a melhor maneira de guardar os dados no Android ? Mysql ? >>>>>>> Alguém sabe de um bom tutorial para estar parte ? >>>>>>> Cumprimentos >>>>>>> >>>>>>> -- >>>>>>> Luís Medeiro Costa >>>>>>> >>>>>>> Flex Front-End Developer >>>>>>> URL: http://www.luiscostaweb.com/ >>>>>>> E-mail: [email protected] >>>>>>> MSN: [email protected] >>>>>>> Twitter: http://twitter.com/LTostas >>>>>>> >>>>>>> -- >>>>>>> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >>>>>>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>>>>>> dos Grupos do Google. >>>>>>> Para publicar uma mensagem neste grupo, envie um e-mail para >>>>>>> [email protected]. >>>>>>> Para anular a inscrição neste grupo, envie um e-mail para >>>>>>> [email protected]. >>>>>>> Para ver mais opções, visite este grupo em >>>>>>> http://groups.google.com/group/riapt?hl=pt-PT. >>>>>>> >>>>>> >>>>>> -- >>>>>> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >>>>>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>>>>> dos Grupos do Google. >>>>>> Para publicar uma mensagem neste grupo, envie um e-mail para >>>>>> [email protected]. >>>>>> Para anular a inscrição neste grupo, envie um e-mail para >>>>>> [email protected]. >>>>>> Para ver mais opções, visite este grupo em >>>>>> http://groups.google.com/group/riapt?hl=pt-PT. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Luís Medeiro Costa >>>>> >>>>> Flex Front-End Developer >>>>> URL: http://www.luiscostaweb.com/ >>>>> E-mail: [email protected] >>>>> MSN: [email protected] >>>>> Twitter: http://twitter.com/LTostas >>>>> >>>>> -- >>>>> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >>>>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>>>> dos Grupos do Google. >>>>> Para publicar uma mensagem neste grupo, envie um e-mail para >>>>> [email protected]. >>>>> Para anular a inscrição neste grupo, envie um e-mail para >>>>> [email protected]. >>>>> Para ver mais opções, visite este grupo em >>>>> http://groups.google.com/group/riapt?hl=pt-PT. >>>>> >>>> >>>> -- >>>> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >>>> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" >>>> dos Grupos do Google. >>>> Para publicar uma mensagem neste grupo, envie um e-mail para >>>> [email protected]. >>>> Para anular a inscrição neste grupo, envie um e-mail para >>>> [email protected]. >>>> Para ver mais opções, visite este grupo em >>>> http://groups.google.com/group/riapt?hl=pt-PT. >>>> >>> >>> >>> >>> -- >>> Luís Medeiro Costa >>> >>> Flex Front-End Developer >>> URL: http://www.luiscostaweb.com/ >>> E-mail: [email protected] >>> MSN: [email protected] >>> Twitter: http://twitter.com/LTostas >>> >> >> >> >> -- >> Luís Medeiro Costa >> >> Flex Front-End Developer >> URL: http://www.luiscostaweb.com/ >> E-mail: [email protected] >> MSN: [email protected] >> Twitter: http://twitter.com/LTostas >> >> -- >> Recebeu esta mensagem porque está inscrito no grupo "Mailing List da >> Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos >> Grupos do Google. >> Para publicar uma mensagem neste grupo, envie um e-mail para >> [email protected]. >> Para anular a inscrição neste grupo, envie um e-mail para >> [email protected]. >> Para ver mais opções, visite este grupo em >> http://groups.google.com/group/riapt?hl=pt-PT. >> > > -- > Recebeu esta mensagem porque está inscrito no grupo "Mailing List da > Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos > Grupos do Google. > Para publicar uma mensagem neste grupo, envie um e-mail para > [email protected]. > Para anular a inscrição neste grupo, envie um e-mail para > [email protected]. > Para ver mais opções, visite este grupo em > http://groups.google.com/group/riapt?hl=pt-PT. > -- Luís Medeiro Costa Flex Front-End Developer URL: http://www.luiscostaweb.com/ E-mail: [email protected] MSN: [email protected] Twitter: http://twitter.com/LTostas -- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.
