Xml,java e bd-como fazer

Oi tituga,

Provavelmente é por causa desta linha:

package xml;

Tente adapta-la ao seu projeto para ver se funciona. Se o erro continuar post os detalhes do erro.

[]'s

Oi
Nao essa linha ta bem.
o erro é este:

Tabela cannot be resolved to a type.

Nao sei o porque deste erro.POde ajudar?

Entretanto tentei com o seu outro codigo, mudei algumas coisas e ficou assim:

package pt.ConvBD;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class xml {

public static Document readXmlDocument(String fileName) {  	
   Document document = null;  

   try {  
        SAXReader reader = new SAXReader();  

        document = reader.read(fileName);  
             } catch (DocumentException e) {  
               e.printStackTrace();  
             }  

   return document; 
   
 }  
   
@SuppressWarnings("unchecked")  

public static void printXmlDocument(Document document) {  
     Element root = document.getRootElement();  

    // Obtém a lista de tabelas  
     List<Element> rootElements = root.elements();  
      
     for (Element tabela : rootElements) {  

       StringBuilder sbRoot = new StringBuilder(0);  

       sbRoot.append("TABELA DESTINO -> ");  
       sbRoot.append(tabela.attributeValue("destino"));  
       sbRoot.append("  TABELA ORIGEM -> ");  
       sbRoot.append(tabela.attributeValue("origem"));  
          
        print(sbRoot.toString());  
             
        // Obtém a lista de colunas da tabela  
           List<Element> colunas = tabela.elements();  

         for (Element coluna : colunas) {  

        	StringBuilder sbCol = new StringBuilder(0);  
              
            sbCol.append("    COLUNA DESTINO -> "+coluna.attributeValue("destino"));  
            sbCol.append("    COLUNA ORIGEM -> "+coluna.attributeValue("origem"));  
           
            print(sbCol.toString());  
      }  
        
      print("----------------------------------------------------------------");  
  }  
}  




public static void print(String sb) {  
     System.out.println(sb.toString());  
}  

}

O k voce tinha no main eu coloquei na minha shell, aquando faço a ligação.
so k ao correr dao estes erros:

org.dom4j.DocumentException: unknown protocol: c Nested exception: unknown protocol: c
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:321)
at pt.ConvBD.xml.readXmlDocument(xml.java:19)
at pt.Interface.Janela$12.widgetSelected(Janela.java:506)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at pt.Interface.Janela.main(Janela.java:161)
Nested exception:
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:321)
at pt.ConvBD.xml.readXmlDocument(xml.java:19)
at pt.Interface.Janela$12.widgetSelected(Janela.java:506)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at pt.Interface.Janela.main(Janela.java:161)
Nested exception: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:321)
at pt.ConvBD.xml.readXmlDocument(xml.java:19)
at pt.Interface.Janela$12.widgetSelected(Janela.java:506)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at pt.Interface.Janela.main(Janela.java:161)
java.lang.NullPointerException
at pt.ConvBD.xml.printXmlDocument(xml.java:31)
at pt.Interface.Janela$12.widgetSelected(Janela.java:507)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at pt.Interface.Janela.main(Janela.java:161)

sabe o pk disto??

Mt obrigada fantomas tem sido de grand ajuda.
bj

Oi tituga,

O primeiro problema que você citou pode ser porque vc não tenha importado a classe Tabela no código onde ela está sendo utilizada. Verifique se na classe onde está ocorrendo o erro existe uma linha assim:

import pacoteA.pacoteB.pacoteC.Tabela;

Onde pacoteA.pacoteB.pacoteC indica o pacote (package) ou os pacotes onde você colocou a classe Tabela.

Acho que eclipse se vc teclar Ctrl+Shift+O na classe que estiver com o erro  ele faz a importação automática para você

O outro problema com a classe XML pode ser que você tenha colocado algum caracter estranho na url onde está localizado o arquivo, para simular o erro eu coloquei um espaço na url.
Document doc = Xml.readXmlDocument("c:// portugal//atualizacoes.xml"); // <-- TEM UM ESPAÇO ANTES DA PALAVRA PORTUGAL

[]'s

OI fantomas.

foi erro meu. realmente faltava o import.
mas agora qd tento por a correr da-m o seguint erro :

java.lang.NoClassDefFoundError: org/jpox/enhancer/JPOXEnhancer

nao sei o k é?

Quanto ao outro problema ja ta resolvido tambem, tinhas espaços, resolvi por no c: e assim ficou resolvido.

obrigada voce tem sido d grande ajuda

oi
ja adicionei no meu programa.
ele le e imprime o xml mas nao consigo executar as funçoes sql.
da-me o erro:

java.sql.SQLException: Can not issue NULL query.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.StatementImpl.checkNullOrEmptyQuery(StatementImpl.java:431)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1257)
at pt.ConvBD.Tituga.executar(Tituga.java:117)
at pt.ConvBD.Tituga.processar(Tituga.java:63)
at pt.Interface.Janela$12.widgetSelected(Janela.java:510)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
at pt.Interface.Janela.main(Janela.java:162)
ja ta quase… :wink:

Oi tituga,

Acho que o problema é o seguinte:

Este método deve estar voltando um valor nulo.
String sql = destino.obterSelectByPrimaryKey(valores);
Se isso for verdade você terá que fazer uma verificação no código desta linha:
valores = this.obterValores(rs, origem.getColunasChave());
 Se o método obterValores() voltar uma lista de valores vazia certamente ocorrerá este erro. Se isto se confirmar verifique se o método getColunasChave() está voltando o nome da coluna corretamente. 

 Lembre que no arquivo xml você terá que colocar a propriedade primary-key="true" deste jeito:
<coluna destino="customers_id" origem="no" primary-key="true" type="long" />
  O método getColunasChave() tem que retornar a coluna descrita nesta tag, que é a "cutomers_id" utilizada neste exemplo.

 Obs. O nome das colunas no xml não podem conter erros, ou seja, tem que estar exatamente igual ao nome da coluna que está na tabela da base de dados.

 Bem...acho que o problema é este.

System.out.println(“Abraços”);

OI.
Desculpa la…
cm faço a verificação? :oops:

ja tentei o debug com um brakpoint na linha mas nao consegui…
bj

Oi tituga,

 Dê uma lida nas páginas destes links:

http://hotwork.sourceforge.net/hotwork/manual/eclipse/eclipse-user-guide.html#Rodando_em_modo_Debug
http://www.filesystems.org/~dquigley/cse219/index.php?it=eclipse&tt=debug&pf=y
http://hotwork.sourceforge.net/hotwork/manual/eclipse/eclipse-user-guide.html

[]'s

oi.
ainda nao consegui fazer o debug, da-m uns erros
mas consegui descobrir k o outro erro se devia a estar a fazer a ligação duas vezes à base de dados, provavelment (pois apaguei e deu !!! lol)

mas agora acontece k nao faz nem os inserts nem updates.
o k tens nesta linha como arquivo :

Document doc = this.obterXmlDocument(arquivo);

serve para que?

e ja agora nao colocas-t a mostrar os dados k vai passar pois nao?

desculpa tanta pergunta, mas é k tou mesmo atrapalhada nisto, e como ja deu pra perceber nao sou mt sabedora de java :roll:

bj obrigada

oi.

finalmente consegui descobrir…fiz um print dos valores e realmente esta vazio, porque sera?

so falta mesmo ultrapassar este obstaculo…

bj

Amigo problema resolvido…
Ja faz a passagem dos dados…

Agora preciso colocar a passar a pass encriptada, ou seja tem k passar por uma função minha e so depois é mandada para a outra base de dados…
se tiveres alguma ideia diz.

bjs e mt obrigada :wink:

Oi tituga,

[quote]Document doc = this.obterXmlDocument(arquivo);

serve para que? [/quote]

O método this.obterXmlDocument(arquivo) retorna o conteúdo do arquivo xml em uma estrutura navegável do tipo Document, o parametro passado é a localização do arquivo.

Eu ainda não utilizei criptografia mas dê uma olhada neste link http://www.devmedia.com.br/articles/viewcomp.asp?comp=2944 acho que vai te ajudar.

Deculpe a demora em responder.

[]'s

eu ja tenho minha função criptografia a funcionar, ou melhor funciona mas nao com o xml.

minha duvida esta como a vou usar no xml???
Aqui esta como eu chamo a função criptografia:

Criptografia.criptografar(senha)

onde senha é o valor a encriptar.

nao sei como colocar isso no xml.

bjs

Oi tituga,

Segue abaixo uma sugestão, as alterações estão apontadas com uma seta.
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Tabela {
	private String nome = null;
	private List<String> colunas = new ArrayList<String>(0);
	private List<String> colunasChave = new ArrayList<String>(0);
	private List<String> colunasCriptografar = new ArrayList<String>(0);  // <---------------

	public Tabela(String nome, List<String> colunas, List<String> colunasChave, List<String> colunasCriptografar) { // <<----
		this.nome = nome;
		this.colunas = colunas;
		this.colunasChave = colunasChave;
		this.colunasCriptografar = colunasCriptografar;
	}
	
	public Tabela(String nome, List<String> colunas, List<String> colunasChave) {
		this.nome = nome;
		this.colunas = colunas;
		this.colunasChave = colunasChave;
	}
	
	public List<String> getColunas() {
		return this.colunas;
	}
	
	public List<String> getColunasChave() {
		return this.colunasChave;
	}
	
	public List<String> getColunasCriptografar() {
		return this.colunasCriptografar;
	}

	public String obterSelect() {
		StringBuilder sb = new StringBuilder(0);

		sb.append("SELECT ");
		sb.append(this.concatenar(this.colunas));
		sb.append(" FROM ");
		sb.append(this.nome);

		return sb.toString();
	}

	public String obterSelectByPrimaryKey(List<String> valores) {
		String result = null;
		
		if (valores != null && valores.size() == this.colunasChave.size()) {
			StringBuilder sb = new StringBuilder(0);

			sb.append(this.obterSelect());
			sb.append(" WHERE ");

			for (int i = 0; i < this.colunasChave.size(); i++) {
				sb.append(" ");
				sb.append(colunasChave.get(i));
				sb.append("=");
				sb.append(valores.get(i));
				sb.append(" AND");
			}

			result = sb.toString();
			result = result.substring(0, result.length() - 3);
		}

		return result;
	}

	public String obterUpdate(List<String> valores) {
		String result = null;

		if (valores != null && valores.size() == this.colunas.size()) {
			StringBuilder sb = new StringBuilder(0);

			sb.append("UPDATE ");
			sb.append(this.nome);
			sb.append(" SET ");
			
			for (int i = 0; i < this.colunas.size(); i++) {
				sb.append(colunas.get(i));
				sb.append(" = ");
				sb.append(valores.get(i));
				sb.append(",");
			}

			result = retirarUltimoCaracter(sb.toString());
		}

		return result;
	}

	public String obterInsert(List<String> valores) {
		StringBuilder sb = new StringBuilder(0);

		sb.append("INSERT INTO ");
		sb.append(this.nome);
		sb.append(" ( ");
		sb.append(this.concatenar(this.colunas));
		sb.append(" ) ");
		sb.append("VALUES ( ");

		for (String valor : valores) {
			sb.append(valor+"'");
		}

		return( retirarUltimoCaracter(sb.toString())+" )");
	}

	private String concatenar(List<String> colunas) {
		StringBuilder sb = new StringBuilder(0);

		for (String coluna : colunas) {
			sb.append(coluna+",");
		}

		return retirarUltimoCaracter(sb.toString());
	}
	
	public static String doubleToString(Double v) {

		String valor = ( v != null ? String.valueOf(v) : "null" );
		
		return valor;
	}
	
	public static String longToString(Long v) {
		
		String valor = ( v != null ? String.valueOf(v) : "null" );
		
		return valor;
	}
	
	public static String stringToString(String v) {
		
		String valor = ( v != null ? "'" + v + "'" : "null" );
		
		return valor;
	}
	
	public static String dateToString(Date v) {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");		
		
		String valor = ( v != null ? "'" + sdf.format(v) + "'" : "null" );
		
		return valor;
	}
	
	private String retirarUltimoCaracter(String param) {
		return (param.substring(0, param.length() - 1));
	}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Tituga {
	private Connection cnn = null;

	@SuppressWarnings("unchecked")
	public void processar(String arquivo) {

		this.conectar();

		if (this.cnn != null) {
			Document doc = this.obterXmlDocument(arquivo);

			Element root = doc.getRootElement();

			// Obtém a lista de tabelas
			List<Element> rootElements = root.elements();

			for (Element tabela : rootElements) {

				String origem = tabela.attributeValue("origem");
				String destino = tabela.attributeValue("destino");

				List<String> colunasOrigem = new ArrayList<String>(0);
				List<String> colunasDestino = new ArrayList<String>(0);
				List<String> colunasChaveOrigem = new ArrayList<String>(0);
				List<String> colunasChaveDestino = new ArrayList<String>(0);
				List<String> colunasCriptografar = new ArrayList<String>(0); // <<---------------

				// Obtém a lista de colunas da tabela
				List<Element> colunas = tabela.elements();

				for (Element coluna : colunas) {

					colunasOrigem.add(coluna.attributeValue("origem"));
					colunasDestino.add(coluna.attributeValue("destino"));

					if (coluna.attributeValue("primary-key") != null) {
						colunasChaveOrigem.add(coluna.attributeValue("origem"));
						colunasChaveDestino.add(coluna.attributeValue("destino"));
					}
					
					if (coluna.attributeValue("criptografar") != null) {          // <<------------------
						colunasCriptografar.add(coluna.attributeValue("origem")); // <<------------------
					}                                                             // <<------------------  
				}

				// Construir os objetos para a tabela origem e destino
				Tabela tabelaOrigem = new Tabela(origem, colunasOrigem, colunasChaveOrigem, colunasCriptografar); // <<------------
				Tabela tabelaDestino = new Tabela(destino, colunasDestino, colunasChaveDestino);

				// Processa a atualização das tabelas origem e destino
				this.executar(tabelaOrigem, tabelaDestino);
			}

			this.desconectar();
		}
	}

	private List<String> obterValores(ResultSet rs, List<String> colunas) {
		List<String> valores = new ArrayList<String>(0);

		try {
			ResultSetMetaData rsmd = rs.getMetaData();

			for (String coluna : colunas) {
				int i = rs.findColumn(coluna);
				String t = rsmd.getColumnTypeName(i);

				if (t.equals("VARCHAR")) {
					valores.add(Tabela.stringToString(rs.getString(i)));
				} else if (t.equals("NUMERIC") || t.equals("LONG")) {
					valores.add(Tabela.longToString(rs.getLong(i)));
				} else if (t.equals("DOUBLE")) {
					valores.add(Tabela.doubleToString(rs.getDouble(i)));
				} else if (t.equals("DATE")) {
					valores.add(Tabela.dateToString(rs.getDate(i)));
				} else if (t.equals("BLOB")) {
					valores.add("null");
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return valores;
	}

	private void executar(Tabela origem, Tabela destino) {

		String query = origem.obterSelect();

		try {
			List<String> valores = null;

			Statement stOrigem = cnn.createStatement();
			Statement stDestino = cnn.createStatement();

			ResultSet rs = stOrigem.executeQuery(query);

			while (rs.next()) {

				valores = this.obterValores(rs, origem.getColunasChave());

				String sql = destino.obterSelectByPrimaryKey(valores);

				ResultSet rsKey = stDestino.executeQuery(sql);

				valores = this.obterValores(rs, origem.getColunas());
				
				valores = CriptografiaUtil.criptografar(origem, valores); // <--------------------
				
				// Verificar se a chave já está no destino
				if (rsKey.next()) {
					// Se estiver altera os dados
					sql = destino.obterUpdate(valores);
				} else {
					// Se NÂO estiver insere os dados
					sql = destino.obterInsert(valores);
				}

				stDestino.execute(sql);
			}

			cnn.commit();

			rs.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void conectar() {
		try {
			cnn = DriverManager.getConnection("jdbc:derby:C:\\portugal\\tituga", "admin", "admin");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private void desconectar() {
		if (this.cnn != null) {
			try {
				this.cnn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	private Document obterXmlDocument(String fileName) {
		Document document = null;

		try {
			SAXReader reader = new SAXReader();

			document = reader.read(fileName);
		} catch (DocumentException e) {
			e.printStackTrace();
		}

		return document;
	}

	public static void print(String sb) {
		System.out.println(sb.toString());
	}

	public static void main(String[] args) {
		Tituga tituga = new Tituga();

		tituga.processar("c://portugal//atualizacoes.xml");
	}
}

Esta classe é nova.


import java.util.ArrayList;
import java.util.List;

public class CriptografiaUtil {

	public static List<String> criptografar(Tabela tabela, List<String> valores ) {
		List<String> valoresCriptografados = new ArrayList<String>(0);
		
		List<String> colunas = tabela.getColunas();
		List<String> colunasCriptografar = tabela.getColunasCriptografar();
		
		for(int i = 0; i < colunas.size(); i++) {
			
			String coluna = colunas.get(i);
			String valor = valores.get(i);
			
			if(colunasCriptografar.contains(coluna)) {
				String valorCriptografado = Criptografia.criptografar(valor); // <<---------------- CRIPTOGRAFAR
				
				valor = "'"+valorCriptografado+"'";
			}
			
			valoresCriptografados.add(valor);
		}
		
		return valoresCriptografados;
	}
}

Antes de alterar o seu projeto faça um backup antes, espero ter ajudado

[]'s

Esqueci de enviar o novo xml, foi adicionado o atributo criptografar=“true”

<?xml version="1.0" encoding="UTF-8"?>
<base-dados>
	<tabela destino="customers" origem="cl">
		<coluna destino="customers_id" origem="id" primary-key="true" />
		<coluna destino="customers_firstname" origem="nome" />
		<coluna destino="customers_fax" origem="fax" />
		<coluna destino="customers_telephone" origem="telefone" />
		<coluna destino="customers_dob" origem="nascimento" />
		<coluna destino="customers_email_adress" origem="email" />
		<coluna destino="customers_password" origem="pass" criptografar="true" />
	</tabela>

	<tabela destino="produtcs" origem="st">
		<coluna destino="produtcs_id" origem="ststamp" primary-key="true" />
		<coluna destino="produtcs_model" origem="familia" />
		<coluna destino="produtcs_quantity" origem="stock" />
		<coluna destino="produtcs_price" origem="pv1" />
		<coluna destino="manufacturers_id" origem="fornec" />
		<coluna destino="produtcs_weigth" origem="peso" />
		<coluna destino="produtcs_image" origem="imagem" />
	</tabela>

	<tabela destino="produtcs_description" origem="st">
		<coluna destino="produtcs_id" origem="ststamp" primary-key="true" />
		<coluna destino="produtcs_description" origem="design" />
		<coluna destino="language_id" origem="lang1" />
		<coluna destino="produtcs_url" origem="url" />
	</tabela>
</base-dados>

[]'s

É isso amigo.

agora tenho apenas um problema k tou a tentar resolver.
No update ele nao da erro mas, como tenho varias linhas nao esta a fazer o update no sitio certo, falta o where, teria de ficar qualquer coisa como:

UPDATE customers SET customers_firstname = ‘Paulo’,customers_fax = 252718923,customers_telephone = 912345678,customers_dob = ‘1985-02-10’,customers_email_address = ‘tony_dotcom@hotmail.com’,customers_password = ‘b5ef261a75dce04c2b86ad4a0d3ea510’ WHERE customers_id=‘id’

mas nao sei como.

ja tentei alterar no codigo mas nao consigo tirar a virgula antes do where…

obrigada por tudo

Oi tituga,

Na classe Tabela.java tem um método que faz isso.

private String retirarUltimoCaracter(String param) { return (param.substring(0, param.length() - 1)); }

[]'s

oi.

Ja resolvi o problema.

Acrescentei o WHERE e coloquei um if, no caso se ser o this.colunasChave.size()-1 nao coloca virgula, assim insere os dados direitinhos :wink:

Obrigada pela sua ajuda fantimas, ficou tudo a funcionar direitinho :wink:

bj

oi amigo

tou com um novo problema…
queria gerar o .jar para puder colocar o programa a funcionar noutro computador, mas nao da.
Fiz o export mas ao tentar correr da-m um erro:

could not find the main class : ptInterface.Janela2.Program will exit.

a minha main é uma windows application…
podes-m ajudar?