Tem como?

17 respostas
S

Ola pessoal, sou novo aqui no Portal Java, mas tenho muito interesse na area.

Bom to fazendo um programinha, p/ cadastrar as notas da faculdade,
e gostaria de saber como faço pra gravar dados? existe algo como um bd no cel?

Tenho muitas duvidas nessa parte…

Obrigado, desde ja…
Fuiii :idea:

17 Respostas

V

Olá, boas vindas. Aproveite bastante o PJ!

Java, como toda linguagem de programação, possibilita o acesso a banco de dados.
E não entendi direito a sua pergunta. “Bd no cel” == “Banco de dados para celular”, é isso?
Você pode usar algo como um banco de dados embutido (HSQLDB). Mas explica melhor. Isso não tem nada a ver com o sistema para a faculdade, tem?

J

O que vc é usado para guardar dados no celular eh o RMS, recordStores…
são como se fossem uns arquivos textos… vc pode dar uma olhada na API para maiores especificações… ou tbm na seção de Artigos e tutoriais, na seção de J2ME…

Procure por RecordStore qqr coisa volta ai!

Abraço!

cya!

S

Vou explicar melhor,
Quero q meu programa tenha lá…
1)*Cadastrar
----------Materia
----------Nota

2)*Apagar
-materiaA
-materiaB
-materiaC

3)*Editar
-materiaA
-materiaB

entendeu +ou- ?
Na primeira parte eu cadastro a materia e a nota, com isso a materia e a nota aparece no APAGAR E NO EDITAR, ele fica cadastrado lá até eu apaga ou edita, intendeu?
Só que como sou muito novo nessa area preciso de ajuda nessa parte.

valew aeww…

J

dae kra… tem como fazer isso sim =)

não eh nada de muito complicado… um pouco de estudo e vc ja ta craque =)

abraço!!

V

:???: Humm, não sei não, jujo. Para quem está começando não é tão simples assim…

s4d4n, você já trabalhou com alguma outra linguagem? PHP? Delphi? VB? C++?
Tem em mãos algum livro de Java? Esse é um sistema para a Web ou Desktop?

Já conhece o básico de Java? Orientação a objetos?

Obs: que login estranho, hein? :blackp:

S

Já. Tenho um site inteiro em php, Já li alguns tutoriais de J2ME, consegui faze uma parte deste programa, mas confesso q to meio perdido, não sei naum oq fazer a partir daki. Não tenho livros e tenho só dois programas o J2ME toolkit 2.1 e o NetBeans IDE.

Com relação ao meu nick, é S4D4N (Sadan). Nome de um cachorro q eu tinha e q morreu.

V

Bom, vou logo avisando. J2ME não é o meu forte.

Mas vamos lá. Seu sistema é um controle de matérias e notas. Provavelmente você também vai cadastrar alunos. Talvez professores… As informações ficarão guardades juntas, em algum servidor? Ou cada professor/aluno terá um sistema próprio e independente, tipo uma agenda?

Obs: Sadan, entendi… Conheci um cachorro chamado Sadan também. Bom na verdade, só conheci pela televisão. Ele mora/morava no Iraque. :bah:

S

Cara, pode ser como uma agenda

Cadastra só
*Materia
*Professor
*nota

acho q assim ja ta bom.

V

Então é RMS na veia. :wink:

S

Aew cara, agora to intendendo bem…

Quero sabe o seguinte, To seguindo um exemplo base, só q o “banco de dados” desse exemplo fica no proprio código, tem como incluir ou modificar dados no codigo?

Não sei se estou errado, mas depois q vc construi o aplicativo o java vira class, não é?

Se for isso q eu quero saber, se depois de pronto tem como adicionar ou editar dados no .class

Ta começando a ficar complexo o negocio. :idea:

J

Assim… acho que vc ta fazendo uma confusao ai…

criando os RMS, eles nao ficam dentro do teu coódigo, ele ficam em um “bd” dentro do celular… independente se vc atualizar o teu aplicativo, e colocar la denovo… os dados continuam… entendeu?

abraço
cya!

S

ué! onde fica esse “bd” aki no meu pc quando eu testo? e porque od dados aprecem no .java ?

Quer q eu t mando ou posto o código, pra vc ver? :?:

J

como assim os dados aparecem no .java??

posta ai o codigo kra…

abraço!

S
<blockquote>import java.util.Vector;

import javax.microedition.rms.<em>;

import <a href="http://java.io">java.io</a>.</em>;

import javax.microedition.midlet.<em>;

import javax.microedition.lcdui.</em>;

public class J2meMob extends MIDlet implements CommandListener {

Form mainForm = new Form ("Mat. e Notas");
TextField symbolField = new TextField ("Procurar", "", 5, TextField.ANY);
StringItem resultItem = new StringItem ("", "");
    StringItem resultFName = new StringItem ("", "");
StringItem resultLName = new StringItem ("", "");
StringItem resultAdd = new StringItem ("", "");
StringItem resultPhone = new StringItem ("", "");

RecordStore recStore;


private static final Command okCmd = new Command("OK", Command.OK, 1);



public J2meMob  () {
	createDatabase();
mainForm.append (symbolField);
mainForm.append (resultItem);
mainForm.append (resultFName);
mainForm.append (resultLName);
mainForm.append (resultAdd);
mainForm.addCommand (okCmd);
mainForm.setCommandListener (this);
}


private void createDatabase(){
	connect();
populateData();
}

private void connect(){
try {
  recStore = RecordStore.openRecordStore("Address", true );

}
catch (Exception e) {
   
    resultItem.setLabel ("Error:");
    resultItem.setText (e.toString ());
}

}

private void populateData(){
 try
  	{
  	int recordID = 0;
	ByteArrayOutputStream bytstream = new ByteArrayOutputStream();
    DataOutputStream writer = new DataOutputStream(bytstream);
    writer.writeUTF("mat1");
    writer.writeUTF("fulano");
    writer.writeUTF("4");
    writer.flush();
     
    byte[] rec = bytstream.toByteArray();   
    recordID = recStore.addRecord(rec,0,rec.length);
    System.out.println("recordID"+recordID);
    writer.flush();
    bytstream.reset();
    
    //Second Record
   
    writer.writeUTF("mat2");
    writer.writeUTF("siclano");
    writer.writeUTF("8");
    writer.flush();
     
    rec = bytstream.toByteArray();   
    recordID = recStore.addRecord(rec,0,rec.length);
    System.out.println("recordID"+recordID);
    writer.close();
    bytstream.close();
    
    recStore.closeRecordStore();
    
    }

catch (Exception e) {

resultItem.setLabel ("Error:");
    resultItem.setText (e.toString ());
}

}



public void startApp () {
Display.getDisplay (this).setCurrent (mainForm);
}

public void pauseApp () {
}

public void destroyApp (boolean unconditional) {
	

}  

public void commandAction (Command c, Displayable d) {
try {
    // build request string
   
   Vector results = null;
   if(c == okCmd){
   String symbol = symbolField.getString();
      
   results = fetchData(symbol);
   
   if(results.size() &gt; 0) {
      
            
      	resultFName.setLabel("Materia");
      	resultFName.setText((String)results.elementAt(0));
      	resultLName.setLabel("Professor");
      	resultLName.setText((String)results.elementAt(1));
      	resultAdd.setLabel("Nota");
      	resultAdd.setText((String)results.elementAt(2));
      	
     
	  }else{
	 	
      	resultFName.setText("");
           	resultLName.setText("");
           	resultAdd.setText("");
	  
	   }

}

}
catch (Exception e) {

resultItem.setLabel ("Error:");
    resultItem.setText (e.toString ());
}
}


private Vector fetchData(String data){
 Vector records = new Vector();
try{
	  
	 
	   ByteArrayInputStream stream;
       DataInputStream reader;
       recStore = RecordStore.openRecordStore("Address", true );
       String fname;
    
    for (int i = 1; i &lt;= recStore.getNumRecords() &amp;&amp; records.size() == 0; i++) {
     	byte[] rec = new byte[recStore.getRecordSize(i)];
     	rec = recStore.getRecord(i);
     	stream = new ByteArrayInputStream(rec);
        	reader = new DataInputStream(stream);
        	fname = reader.readUTF();
        
        	if(fname.equals(data)){
        		
           	records.addElement(fname);
        	records.addElement(reader.readUTF());
        	records.addElement(reader.readUTF());
        	records.addElement(reader.readUTF());	
        	}		
    }
    
     recStore.closeRecordStore();
     }catch(Exception e){
    resultItem.setLabel ("Error:");
    resultItem.setText (e.toString ());
  } 
  
  
return records;
}





public static void main (String [] argv) {
new J2meMob().startApp ();
}

}

Da uma olhada nessa parte

private void populateData(){

oq posso fazer ai? :?:

J

mmmm lamento… mas nao entendi sua duvida!

Sim, o cara esta populando o rms com alguns dados de inicio… mas e dai?!
qual o problema?!

eu nao vi direito o que o aplicativo faz… mas vi que ele tem uns textField e tal… vc nao insere dados por ali?!

da uma explicada melhor nas suas dúvidas ai kra…

abraço!

S

Vamu dinovo…

[color=“green”]Explicação.[/color]
seguinte, se quizer testar ai, no seu pc pra v como fica ia ser bom. Esse é o codigo completo.
Aquela entrada de texto é pra procurar oq está no “bd”. Como vc pode reparar, parece q o “BD” dele fica no próprio código.

Se vc coloca ele ai no seu pc e testar vai ver q digitando [color=“brown”]mat1[/color] ele aparece os dados q estão abaixo do [color=“red”]mat1.[/color]. ou seja o nome do Professor e a nota.

[color=“green”]Agora a duvida.[/color]
Como pode ver tem esse mini “db” no código, só posso pesquisar oq ta no codigo, pois entaum, eu keria arrumar uma maneira de inserir ou editar dados nesse código, ja q ele só acha oq está no proprio codigo dele.

intendeu?

J

Ahhhh tah… agora eu entendi bem sim…

Então… nao eh que os dados estejam no codigo… mas sim, que o kra está fazendo inserçoes implicitas… ou seja, ele coloca aquilo ali, soh pra popular, para mostrar com funciona o search e tal… nao sei se tem alguma tela para inserir… ahh e tbm nao significa que os dados estão no codigo… significa que ele está criando um RecordStore como vc pode ver na chamada recStore.open…(“string”,true);

Conseguiu entender agora!?!?

pelo que eu vi, esse aplicativo destina-se somente a isso, como um exemplo e tal… mas vc pode incrementar ele… programando mais coisas… como uma tela para inserçao, delecao, ediçao, etc etc…

é isso ai rapah… abraço!

cya!

Criado 8 de agosto de 2004
Ultima resposta 9 de ago. de 2004
Respostas 17
Participantes 3