Eu fiz métodos para conectar, por isto não estava usando o Statement e o connection naquela query :
Conexao é uma superclasse
public class Conexao
{
final private String driver = "oracle.jdbc.driver.OracleDriver";
final private String url = "jdbc:oracle:thin:@127.0.0.1XE";
final private String usuario = "*****";
final private String senha = "**********";
private Connection conexao;
public Statement st;
public ResultSet rs;
public boolean conecta()
{
boolean result = true;
try
{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
st = conexao.createStatement();
}
catch(ClassNotFoundException Driver)
{
JOptionPane.showMessageDialog(null,"Driver não localizado: "+Driver);
result = false;
}
catch(Exception b)
{
JOptionPane.showMessageDialog(null,"Erro de Conexão!");
result = false;
}
return result;
}//fim do metodo conecta
por isto eu usei só o resultSet (rs) naquele código, pois na main eu chamo instancio os objetos e chamo o método conecta...
package Proj_Oracle_Java;
import javax.swing.JOptionPane;
public class Executa_Sistema
{
public static void main(String[] args)
{
int op = 1;
while(op != 0)
{
op = Integer.parseInt(JOptionPane.showInputDialog(null,"\n[ 1 ] LISTAR DADOS \n\n[ 2 ] "+
" INSERIR DADOS\n\n[ 3 ] DELETAR DADOS \n\n[ 4 ] ALTERAR DADOS \n\n[ 5 ] EFETUAR VENDAS\n\n"+
"[ 0 ] SAIR DO SISTEMA\n\n"," *** MENU PRINCIPAL ***",JOptionPane.QUESTION_MESSAGE));
switch(op)
{
case 1:
Listar menu = new Listar();
menu.conecta();
menu.Listar_dados();
break;
case 2:
Inserir dados = new Inserir();
dados.conecta();
dados.Inserir_dados();
break;
case 3:
Delete del = new Delete();
del.conecta();
del.deletar();
break;
case 4:
Update up = new Update();
up.conecta();
up.Update_dados();
break;
case 5:
Conexao vendas = new Conexao();
vendas.conecta();
// vendas.Inserir_dados();
vendas.Listar_dados();
break;
}//switch
}//while
}//main
}//class
Eu encontrei uma solução viável por enquanto e vou estudar este seu código...Veja como consegui, só que me aparece a data e a hora juntos :
rs = st.executeQuery("Insert into venda(vendata,venclicodigo,venfuncodigo) values (to_date(' "+vendata+" ','dd/mm/rr hh24:mi:ss'),' "+venclicodigo+" ', ' "+venfuncodigo+" ')");
Eu coloquei em formato de hora (rr hh24:mi:ss') na query apenas para ficar menos 'deselegante', digamos assim, o meu código. Porém, como poderia fazer para aparecer somente a data ou somente a hora ???
No meu caso eu peço para armazenar a data (vendata) mas, se eu tivesse um outro atributo para inserir somente a hora (venHorario) ??? Esta é a minha dúvida, tanto em Java como em ORACLE..
Obrigado pela dica, mais uma vez... Como sou novato, ainda vou postar bastante dúvidas por aqui e contar com a ajuda da galera gente boa, igual a você ! Valeu.
Date em Java
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Qui, 26 Nov 2009 1:05 pm
- Localização: SP
Ricardo H. Tajiri
A data e hora fazem parte do DATE do java e do Oracle, não vejo muito problema em mantê-los juntos...
Caso queira mostrar só a data (ou só a hora), você pode formatá-la com o SimpleDateFormat, transformando-a em string, para depois apresentá-la.
Não sei se tem algum jeito mais elegante.
Eu até pensei em postar a solução que você encontrou, mas o problema é que ela permite SQL Injection, como eu já falei. Segue um link explicativo pra você entender o problema.
http://en.wikipedia.org/wiki/SQL_injection
Outro problema também (coisa do Oracle) é que sempre que você executar algum insert (ou qualquer outro SQL - select, update...) o Oracle vai ter que fazer o Hard Parsing do seu SQL, podendo gerar alguma queda no desempenho, dependendo do tamanho da sua aplicação e do número de usuários. Isto porque você não estará usando BIND variables.
A forma como eu postei no outro tópico soluciona tanto o problema de SQL injection quanto o problema das BINDS. Mas isso é com você... [/code]
Caso queira mostrar só a data (ou só a hora), você pode formatá-la com o SimpleDateFormat, transformando-a em string, para depois apresentá-la.
public static void main(String[] args)
{
Date data = new Date();
SimpleDateFormat dtFormatData = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat dtFormatHora = new SimpleDateFormat("hh:mm:ss");
String dataStr = dtFormatData.format(data);
System.out.println("data formatada: " + dataStr);
String horaStr = dtFormatHora.format(data);
System.out.println("hora formatada: " + horaStr);
}
}
Não sei se tem algum jeito mais elegante.
Eu até pensei em postar a solução que você encontrou, mas o problema é que ela permite SQL Injection, como eu já falei. Segue um link explicativo pra você entender o problema.
http://en.wikipedia.org/wiki/SQL_injection
Outro problema também (coisa do Oracle) é que sempre que você executar algum insert (ou qualquer outro SQL - select, update...) o Oracle vai ter que fazer o Hard Parsing do seu SQL, podendo gerar alguma queda no desempenho, dependendo do tamanho da sua aplicação e do número de usuários. Isto porque você não estará usando BIND variables.
A forma como eu postei no outro tópico soluciona tanto o problema de SQL injection quanto o problema das BINDS. Mas isso é com você... [/code]
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes