Ol�,

Algu�m sabe como chamar um programa java dentro de outro?
Estou com um problema... fiz um programa para inserir e pegar dados de um bd, e outro programa para mostrar informa��es em vrml. No entanto preciso enviar as informa��es q peguei no primeiro programa e enviar para o vrml atrv�s do segundo programa. J� tentei fazer em um s� c�digo, mas gera erro de conex�o com o bando de dados.... por isso pretendo fazer em programas separados e atrav�s do segundo programa enviar os dados do bd para o vrml...

 

Os dois programas em Java compilam, no entanto n�o est�o funcionando.... o que pode estar acontecendo?

 

// dados.java – programa que inseree apresenta valores do bd

import java.sql.*;

 

public class dados{

������ private Connection con;

������ private Statement st;

������ private ResultSet rs;

������ private int nIndice = 1;

 

������ public boolean criaConexao(){

������������������ boolean lRetorno;

������������������ try{

����������������������������� Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

������������������ }

������������������ catch(ClassNotFoundException e){

����������������������������� System.out.println("Um erro ocorreu na conex�o:");

����������������������������� System.exit(1);

����������������������������� lRetorno = false;

������������������ }

 

������������������ try{

����������������������������� con = DriverManager.getConnection("jdbc:odbc:barra_odbc");

 

����������������������������� st = con.createStatement();

�� �������������������������� preencheTabelas();

����������������������������� lRetorno = true;

������������������ }

������������������ catch (SQLException eSQL){

����������������������������� System.out.println("Erro na conex�o ");

����������������������������� System.exit(1);

����������������������������� lRetorno = false;

������������������ }

������������������ return (lRetorno);

������ }

������ public void preencheTabelas(){

������������������ int i;

������������������ float numero;

������������������ String comando;

������������������ try{

����������������������������� st.executeUpdate("delete from ValorBarra");

����������������������������� for (i = 1; i <= 100; i++){

����������������������������������������� numero = (float) (Math.random()*100);

����������������������������������������� comando = "Insert Into ValorBarra values (" + i + ", " + numero + ")";

����������������������������������������� st.executeUpdate(comando);

����������������������������� }

������������������ }

������������������ catch (SQLException e){

����������������������������� System.out.println("Erro ao pesquisar nas tabelas");

����������������������������� System.exit(1);

������������������ }

 

������ }

 

������ public float pegaValor(){

������������������ try{

����������������������������� rs = st.executeQuery("select numero from ValorBarra where codigo = " + nIndice);

����������������������������� if (nIndice > 100)

����������������������������������������� nIndice = 1;

����������������������������� else

����������������������������������������� nIndice++;

 

����������������������������� return ((new Float(rs.getString("numero").trim())).floatValue());

������������������ }

������������������ catch (SQLException eSQL){

����������������������������� System.out.println("Erro ao pesquisar o valor da barra");

����������������������������� System.exit(1);

����������������������������� return (0);

������������������ }

������ }

}

 

//Escala.java -programa que pega os valores de dados.java e envia para serem apresentados em um programa de realidade virtual VRML

 

import java.awt.*;

import java.util.*;

import java.awt.event.*;

import vrml.*;

import vrml.node.*;

import vrml.field.*;

// nova classe que eu criei;

import dados;

 

//import testegraficoa;

 

public class Escala extends Script

{

��� private SFVec3f novaEscala;

��� private SFFloat timeStamp;

��� private boolean conectado;

��� private dados oDados = new dados();

��� // Vari�veis de controle do Java que s�o associadas aos tipos do VRML

��� // Para cada n� VRML h� uma fun��o Java que copia o valores

��� float esc[] = {1, 1, 1};

 

��� // Lista de eventos que o Cortona envia para o Java quando o n�

��� // Script do VRML � acionado

��� static String[] eventos = {"novaEscala", "timeStamp"};

 

��� // Obt�m os valores iniciais da cena VRML

��� // � chamado quando n� Script � criado

��� // Cada um dos campos recebe os valores iniciais definidos na cena

��� public void initialize (){

��� ��� System.out.println("initialize - begin ");

������� novaEscala = (SFVec3f) getEventOut ("novaEscala");

������� timeStamp = (SFFloat) getEventOut ("timeStamp");

������� conectado = oDados.criaConexao();

������� if (!conectado){

��������������������������� System.out.println("N�o foi poss�vel conectar-se ao banco!");

��������������������������� System.exit(1);

��������������� }

��� ��� System.out.println("initialize - end ");

��� }

 

��� public void set_escala(){

��������������� //testegraficoa bd = new testegraficoa();

������� //bd.pegaDados();

������� esc[1] = (float) oDados.pegaValor();

��������������� novaEscala.setValue(esc);

��� }

 

��� public void processEvent(vrml.Event e){

��������������� set_escala();

 

��� }

}

 

Programa de em VRML:

 

#VRML V2.0 utf8

 

DEF�������� G1 Group {

��� children [

��������������� DEF NO Transform {

��������������������������� scale 1 1 1

��������������������������� children [

��������������������������������������� Shape {

�������������������������������������������������� appearance Appearance {

�������������������������������������������������������������� material DEF SphereColor Material {

�������������������������������������������������������������������������� diffuseColor 1 0 0

�������������������������������������������������������������� }

�������������������������������������������������� }

�������������������������������������������������� geometry Box{}

��������������������������������������� }

��������������������������� ]

��������������� }

��������������� Transform {

��������������������������� translation������� 3 3 3

��������������������������� children [

��������������������������������������� Shape {

�������������������������������������������������� appearance Appearance {

�������������������������������������������������������������� material Material {

�������������������������������������������������������������������������� diffuseColor 0 1 0

�������������������������������������������������������������� }

�������������������������������������������������� }

�������������������������������������������������� geometry Box { size���� 1 1 1 }

��������������������������������������� }

��������������������������� ]

��������������� }

��� ]

}

 

DEF S Script{

��� eventIn SFFloat timeStamp

��� eventOut SFVec3f novaEscala

��� url "Escala.class"

}

 

DEF�������� tempo TimeSensor {

��� enabled����������� TRUE

��� startTime 0

��� loop TRUE

}

 

#Temporizador para representar movimento na cena

ROUTE tempo.fraction_changed TO������ S.timeStamp

ROUTE S.novaEscala TO NO.scale

 

Carolina V. Buk

 

 

<<image001.jpg>>

Responder a