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