Jdbc oracle

6 respostas
Wilson_Jr

Pessoal, estou com um problema que nem imagino como resolver.
Estou rodando um exemplo de jdbc com oracle XE, e quando mando grvar os dados ocorre a seguinte mensagen de erro:

SQLException: ORA-01756: string entre aspas não finalizada adequadamente

desde ja Obrigado!

6 Respostas

kaique

Cara, você deve estar passando para o banco uma String com alguma coisa errada com relação às aspas.
Faz o seguinte, pega o comando que você está executando e executa num SQL Developer da vida…assim você vai ver exatamente onde é o problema. Até porque numa ferramenta de gerenciamento do Oracle ela vai colorir os comandos e tipos, deixando também mais fácil de reconhecer os tipos de dados…
Tenta isso e posa aqui depois o resultado…

[]'s.

maicon.santiago

eh realmente …uma das formas mais uteis para ver se a query esta certa e utlizar um mecanismo automatica para execultar a sintaxe ,assim vc v o formato que o banco espera receber.

geralmente da muito erro nos caracteres semalhante como ',`,´ dentro das aspas…vc tem q v qual eh aceito …

flw

Wilson_Jr

Pessoal, estou bem enrolado com este problema. Baixei o sql developer da oracle, mas não sei como funciona direito,
o codigo que estou tentando rodar é o seguinte:

import java.awt.<em>;

import java.awt.event.</em>;

import java.sql.<em>;

import javax.swing.</em>;
public class CadastraFuncionario extends JFrame {

private JLabel l1, l2, l3, l4, l5;

private JTextField t1, t2, t3, t4, t5;

private JButton b1, b2;
public CadastraFuncionario() {

l1 = new JLabel("Código: ");

l2 = new JLabel("CPF: ");

l3 = new JLabel("Nome: ");

l4 = new JLabel("Sálario: ");

l5 = new JLabel("Departamento: ");

t1 = new JTextField(10);

t2 = new JTextField(10);

t3 = new JTextField(10);

t4 = new JTextField(10);

t5 = new JTextField(10);

b1 = new JButton(Gravar no Oracle);

b2 = new JButton(Fechar);

b1.addActionListener(new Ouvinte());

b2.addActionListener(new Ouvinte());
t4.addActionListener(new Ouvinte());

Container c = getContentPane();

c.setLayout(new GridLayout(6,2));

c.add(l1); c.add(t1);

c.add(l2); c.add(t2);

c.add(l3); c.add(t3);

c.add(l4); c.add(t4);

c.add(l5); c.add(t5);

c.add(b1); c.add(b2);
setSize(500,300);

setTitle(Cadastro de Funcionário);

setLocationRelativeTo(null);

setVisible(true);

}

public static void main(String[] args) {

CadastraFuncionario janela = new CadastraFuncionario();

janela.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

private class Ouvinte implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (e.getSource()==b1) {

String url = jdbc:oracle:thin:@127.0.0.1:1521;

Connection con;

String query = INSERT INTO FUNCIONARIO ( +

" CODIGO_FUNCIONARIO, CPF," +

" NOME_FUNCIONARIO, SALARIO, DEPARTAMENTO" +

) VALUES (’” +

t1.getText().trim() + " ', '" +

t2.getText().trim() + " ', '" + t3.getText().trim() + " ', '" +

t4.getText().trim() + " ', '" + t2.getText().trim() + " ', ')";

Statement stmt;

try {

Class.forName(“oracle.jdbc.driver.OracleDriver”);

} catch(java.lang.ClassNotFoundException e1) {

System.err.print(“ClassNotFoundException:);

System.err.println(e1.getMessage());

}

try {

con = DriverManager.getConnection(url, “wilson”, “oracle”);

stmt = con.createStatement();

int rs = stmt.executeUpdate(query);

JOptionPane.showMessageDialog(null, “inserção de Funcionário efetuada com sucesso!”);

stmt.close();

con.close();

} catch(SQLException ex) {

System.err.print("SQLException: ");

System.err.println(ex.getMessage());

}

}// fim do botão 1

else

if (e.getSource()==b2) {

/* 0 = YES_OPTION
  • 1 = NO_OPTION
  • 2 = CANCEL_OPTION
    */
int x = JOptionPane.showConfirmDialog(null, Deseja Fechar a Janela?);

if (x == JOptionPane.YES_OPTION) {

JOptionPane.showMessageDialog(null, Fechando a janela de Cadastro de Funcionário);

dispose();

}

}
}

}

}

caso vcs vejam qual é o erro me avisem, valeu a força!

ramilani12

Utilize PreparedStatement

I

Amigo,

Para postar o código utilize as tag’s de código

NSERT INTO FUNCIONARIO (" + " CODIGO_FUNCIONARIO, CPF," + " NOME_FUNCIONARIO, SALARIO, DEPARTAMENTO" + ") VALUES ('" + t1.getText().trim() + " ', '" + t2.getText().trim() + " ', '" + t3.getText().trim() + " ', '" + t4.getText().trim() + " ', '" + t2.getText().trim() + " [b]', ')"; [/b]
acredito que o problema esta nesta virgula e uma aspa simples no final do código, deve ser o problema de ctrl+c, ctrl+v…rss

veja a dica do amigo acima utilze PreparedStatement

Wilson_Jr

exatamente IgOr_Kz, tinham uma virgula e uma aspa a mais.

Obrigado a todos pela ajuda!

Criado 15 de março de 2008
Ultima resposta 17 de mar. de 2008
Respostas 6
Participantes 5