Dúvida SQL

Pessoal estou tendo um problema em fazer um Insert no programa que estou fazendo. Estou usando Thinlet para digitar os dados e tentar popular a tabela, só que não estou conseguindo fazer com que os dados digitados sejam inseridos na tabela. Segue abaixo o código que estou utilizando:[code]Object lista = find(“lista”);
Object item = Thinlet.create(“item”);
setString(item, “text”, getString(nome, “text”));
putProperty(item, “endereco”, getString(endereco, “text”));
putProperty(item, “email”, getString(email, “text”));
putProperty(item, “telefone”, getString(telefone, “text”));
add(lista, item);
try{

            //Registrando o driver: 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
            //Estabelecendo a conexão através do ODBC criado no Painel de Controle: 
            Connection con = DriverManager.getConnection("jdbc:odbc:Teste","root",""); 
            //Criando um objeto Statement para enviar requisições SQL para o Banco de Dados 
            Statement stmt = con.createStatement();               
                        
            //Adquirindo através de um objeto ResulSet, 
            //os registros retornados pelo SQL:             
            ResultSet results = stmt.executeQuery("INSERT INTO  Contato (nome)" +
                     " VALUES (\"" + nome + "\") " );[/code]

Da maneira como estou fazendo, o dado que aparece no banco está sendo o seguinte: [quote][Ljava.lang.Object;@1571886 [/quote]

Agradeço se alguém puder me dar uma força.

Eu creio que este objeto nome que você está usando é um Object, não uma String.
E creio também que no insert nome deve estar entre aspas simples, não dupla.

pra fazer o insert use o metodo executeUpdate;

PreparedStatement stmt =  
      conn.prepareStatement("INSERT INTO  Contato (nome) VALUES (?) ");
stmt.setString(1,nome);
stmt.executeUpdate();

Valeu pela ajuda pessoal. Estou utilizando a sugestão do rodrigo_gomes, mas acontece que o programa está acusando um erro em : stmt.setString(1,nome);
Onde ele mostra que o método setString que é para (int, String) não é aplicável no caso de (int, Object).
E ao comentar esta parte do código, o programa insere novamente [quote][Ljava.lang.Object;@1bd747e[/quote]
Agradeço se puderem me ajudar.

usa-se executeQuery só para consultas(SELECT) e executeUpdate para qnd os dados sao mudados(INSERT, DELETE, UPDATE).

Qual o tipo da variável ‘nome’?

douglascar

[quote]Onde ele mostra que o método setString que é para (int, String) não é aplicável no caso de (int, Object).
E ao comentar esta parte do código, o programa insere novamente [Ljava.lang.Object;@1bd747e
[/quote]
nome deve estar declarado como Object e n String. Se isso tiver ocorrendo vc tem q fazer a coercao. mostre como vc declarou nome.
tipo:


String str1 = "java";
String str2;
Object nome;

nome = str1;
str2 = (String) nome

douglascar

[quote]Onde ele mostra que o método setString que é para (int, String) não é aplicável no caso de (int, Object).
E ao comentar esta parte do código, o programa insere novamente [Ljava.lang.Object;@1bd747e
[/quote]
nome deve estar declarado como Object e n String. Se isso tiver ocorrendo vc tem q fazer a coercao. mostre como vc declarou nome.
tipo:


String str1 = "java";
String str2;
Object nome;

nome = str1;
str2 = (String) nome

Desculpe pessoal, eu não havia colocado toda a parte do código na mensagem anterior. Acontece que como havia mencionado estou utilizando Thinlet para fazer esta aplicação, mas como entendo pouco do assunto estou meio perdido. [code]public void adicionar(){
Object nome = find(“nome”);
Object endereco = find(“endereco”);
Object email = find(“email”);
Object telefone = find(“telefone”);
if(getString(nome, “text”) == null || getString(nome, “text”).trim().length() < 1
|| getString(email, “text”) == null
|| getString(email, “text”).trim().length() < 1
|| getString(endereco, “text”) == null
|| getString(endereco, “text”).trim().length() < 1){
return;
} else
{
Object lista = find(“lista”);
Object item = Thinlet.create(“item”);
setString(item, “text”, getString(nome, “text”));
putProperty(item, “endereco”, getString(endereco, “text”));
putProperty(item, “email”, getString(email, “text”));
putProperty(item, “telefone”, getString(telefone, “text”));
add(lista, item);
try{

            //Registrando o driver: 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
            //Estabelecendo a conexão através do ODBC criado no Painel de Controle: 
            Connection con = DriverManager.getConnection("jdbc:odbc:Teste","root",""); 
            //Criando um objeto Statement para enviar requisições SQL para o Banco de Dados 
            //Statement stmt = con.createStatement();               
                        
            //Adquirindo através de um objeto ResulSet, 
            //os registros retornados pelo SQL:               
            
            PreparedStatement stmt =  
                con.prepareStatement("INSERT INTO  Contato (nome) VALUES (\"" + nome + "\")  ");
            
          stmt.setString(1,nome);
          stmt.executeUpdate();
            stmt.close();

[/code]A variável nome é um Object o qual pega o conteúdo de “nome” que vem de um arquivo .xml <label text="Nome: " /> <textfield name="nome" weightx="1" />

Então faz um nome.toString() pra colocar ela no setString, tipo:

setString(1,nome.toString());

Rafael, fazendo desta maneira o erro desapareceu, mas ao executar o programa, é retornada a seguinte mensagem: [quote]Erronull[/quote]Devido ao catch que coloquei no final da rotina }catch(Exception e){ System.out.println("Erro"+ e.getMessage()); }
E assim não inseriu nada na tabela.

Se está retornando null, é porque o método find() não encontrou nada para ‘nome’.

Olá,

o que isso find(“nome”); retorna? Um objeto String?
Se for, não da pra fazer String nome = (String) find(“nome”);?

Pessoal, acho que o programa só está retornando dados para a tela do xml. Gostaria de saber como faço para que o dados da tela xml que estão da seguinte maneira:<panel columns="1"> <splitpane divider="150" weightx="1" weighty="1"> <list name="lista" perform="exibir(this)"> </list> <panel columns="3" top="4" left="4" bottom="4" right="4" gap="4"> <panel colspan="4" columns="2" gap="4"> <label text="Nome: " /> <textfield name="nome" weightx="1" /> <label text="email: " /> <textfield name="email" weightx="1" /> <label text="Endereco: " /> <textfield name="endereco" weightx="1" /> <label text="Telefone: " /> <textfield name="telefone" weightx="1" /> </panel> <button name="salvar" text="Salvar" weightx="1" action="adicionar()" /> <button name="limpar" text="Limpar" weightx="1" action="limpar(nome, email, endereco, telefone)" /> <button name="remover" text="Remover" weightx="1" action="remover()" /> </panel> </splitpane> </panel>
Sejam retornados para a tela do programa. A função no arquivo java esta da seguinte maneira:[code]public void adicionar(){
Object nome = find(“nome”);
Object endereco = find(“endereco”);
Object email = find(“email”);
Object telefone = find(“telefone”);
System.out.println(“nome:” + nome.hashCode());
String Nome = nome.toString();
System.out.println(“Nome:” + Nome);
if(getString(nome, “text”) == null
|| getString(nome, “text”).trim().length() < 1
|| getString(email, “text”) == null
|| getString(email, “text”).trim().length() < 1
|| getString(endereco, “text”) == null
|| getString(endereco, “text”).trim().length() < 1){
return;
} else
{

        Object lista = find("lista");
        Object item = Thinlet.create("item");
        setString(item, "text", getString(nome, "text"));
        putProperty(item, "endereco", getString(endereco, "text"));
        putProperty(item, "email", getString(email, "text"));
        putProperty(item, "telefone", getString(telefone, "text"));
        add(lista, item);
        System.out.println("nome" + nome);
        try{           
            //Registrando o driver: 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
            //Estabelecendo a conexão através do ODBC criado no Painel de Controle: 
            Connection con = DriverManager.getConnection("jdbc:odbc:Teste","root",""); 
            //Criando um objeto Statement para enviar requisições SQL para o Banco de Dados 
            //Statement stmt = con.createStatement();               
                        
            //Adquirindo através de um objeto ResulSet, 
            //os registros retornados pelo SQL:
            PreparedStatement stmt =  
                con.prepareStatement("INSERT INTO  Contato (nome) VALUES (\"" + nome + "\")  ");
            
            stmt.setString(1,nome.toString());
            stmt.executeUpdate();
            stmt.close();
            
            Statement sta = con.createStatement();
            ResultSet rec = sta.executeQuery(      
                    "SELECT * " +
            		"FROM Contato " );
            System.out.println("CodCidade\tDescrCidade\t\t\tUF\t" +
            "CodRecor");
            while(rec.next()) {
                System.out.println(rec.getString(1) +  "\t\t"
                        + rec.getString(2) + "\t\t"
                        + rec.getString(3) + "\t"
                        + rec.getString(4));
            }
            sta.close();
            
            
        }catch(Exception e){
   		 System.out.println("Erro"+ e.getMessage());
   	    }
    }
}[/code]Agradeço se puderem me dar uma dica.

DouglasCar

PreparedStatement stmt = con.prepareStatement("INSERT INTO Contato (nome) VALUES (\"" + nome + "\") ");

Pq vc esta inserindo assim ? (nome)

.... ("INSERT INTO Contato ([color=red]nome[/color]) VALUES

quando vc insere na tabela Contato, vc ja passa o nome como atributo, nao sei se vc ja resolvel ou se isso pode te ajudar, mas tentei !

[]s