Erro no insert

6 respostas
F

olá, estou tentando inserir no oracle exeos dados informados em uma tel pelo usuário através de uma aplicação java, porém está danso o seguinte erro: ora 01400 : não é possível inserir NULL em (“FERNANDA”.“PRODUTOS”.“CODIGO”).

Não sei pq o meu txtCodigo não está recebenco o conteúdo digitado!

//abaixo segue o sql de criação da tabela produtos:
create table produtos(
codigo varchar(5) not null constraint produtos_codigo_pk primary key,
nome varchar(45),
custo number(9,2)
)

//abaixo segue o código:

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.<em>;

import java.text.</em>;

import java.sql.*;

public class Produtos extends JFrame {

JLabel lblCadastroProd,lblCodigo,lblNome,lblCusto;
JButton btnGravar,btnSair;
JTextField txtCodigo,txtNome,txtCusto;

public Produtos() {
	    	
	super("Cadastro de Produtos");
	Container Produtos = getContentPane();
	setLayout(null);
	
	lblCadastroProd = new JLabel ("Cadastro de Produtos");
	lblCodigo = new JLabel ("Código.... :");
	lblNome = new JLabel ("Nome...... :");
	lblCusto = new JLabel ("Custo..... :");
	btnGravar = new JButton ("Gravar");
	btnSair = new JButton ("Sair");
	txtCodigo = new JTextField(5);
	txtNome = new JTextField(45);
	txtCusto = new JTextField(12);
	
	Produtos.add(lblCadastroProd);
	Produtos.add(lblCodigo);
	Produtos.add(lblNome);
	Produtos.add(lblCusto);
	Produtos.add(btnGravar);
	Produtos.add(btnSair);
	Produtos.add(txtCodigo);
	Produtos.add(txtNome);
	Produtos.add(txtCusto);
	
	//coluna,linha, largura, altura
	lblCadastroProd.setBounds(20,50,150,20);
	lblCodigo.setBounds(20,90,190,20);
	lblNome.setBounds(20,110,190,20);
	lblCusto.setBounds(20,130,190,20);
	btnGravar.setBounds(20,170,100,20);
	btnSair.setBounds(150,170,100,20);
	txtCodigo.setBounds(80,90,80,20);
	txtNome.setBounds(80,110,150,20);
	txtCusto.setBounds(80,130,130,20);
	
	Produtos.setBackground(new Color(255,128,128));
	
	setSize(300,300);
	setVisible(true);

try {

	String url = "jdbc:odbc:xe";
	String usuario = "fernanda";
	String senha = "oracle";
					
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	
	Connection con;
	con = DriverManager.getConnection(url,usuario,senha);
	
	
	Statement st = con.createStatement();
	st.executeUpdate("INSERT INTO PRODUTOS(CODIGO,NOME,CUSTO) VALUES('"+txtCodigo.getText()+"','"+txtNome.getText()+"','"+txtCusto.getText()+"')");
	
	System.out.println("Registro incluído com sucesso.");
				
	st.close();
	con.close();
	
	}

	catch(java.lang.Exception e)
	{
		System.out.println(e);
	}



	
}
    
	public static void main(String args[]){
	
	Produtos app=new Produtos();
	app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	
	
	
}

}

Valeu !!! Fernanda.

6 Respostas

erickcellani

Fernanda, esse erro não é de Java e sim do BD

"erro: ora 01400 : não é possível inserir NULL em (“FERNANDA”.“PRODUTOS”.“CODIGO”). "

significa que vc está tentando inserir algum valor nulo na sua tabela “PRODUTOS”

suponha que a tabela tenha 4 atributos:
PRODUTOS: (a, b, c, d)

se vc fizer:
insert into PRODUTOS (a, b, c) values (1, 2, 3)

é entendido que o atributo ‘d’ deve ser null, se o atributo ‘d’ estiver configurado como anulável, então vc terá sucesso no seu insert, mas se não for anulável, então vc terá exatamente este erro que aparece!

denni

Oi Fernanda, quando você for postar um trecho de código utilize as
tag code para facilitar o entendimento dos códigos, assim seu código fica igual ao abaixo:

public class HelloWorld{ 
  public static void main(String[] args) { 
    System.out.println("Hello, World!"); 
  } 
}

Abs,

F

a minha tabela produtos tem apenas 03 atributos.

X

O codigo deve ser do tipo INTEGER entao não deve possuir ´´ (aspas simples).

Muda o insert:

st.executeUpdate("INSERT INTO PRODUTOS(CODIGO,NOME,CUSTO) VALUES("+txtCodigo.getText()+",'"+txtNome.getText()+"','"+txtCusto.getText()+"')");
F

galera, valeu pela ajuda!! mas consegui descobrir o erro.
este é um exercício de aua para iniciantes … heheheh, mas realmente a chave primária, nos solicitarm tipo varchar, poir isso as aspas e não o parseInterger.
quanto ao erro era pq naum havia colocado o insert dentro do botão gravar, hahhaha, que rateação. coisa de iniciante mesmo!!!
Fernanda.

X

ueheheh

então beleza ! :smiley:

Criado 9 de abril de 2008
Ultima resposta 10 de abr. de 2008
Respostas 6
Participantes 4