String[] columns = dbm.getColumns ();
DbColumn[] columns = dbm.getColumns ();
    private Node getNodeByKey (ITransaction txn, DbKey key) throws Exception {	// Note: Key must be a DbKey, otherwise will not work for relational objects	Node node = null;	DbMapping dbm = app.getDbMapping (key.getStorageName ());	String kstr = key.getID ();	if (dbm == null || !dbm.isRelational ()) {	    node = (Node)db.getNode (txn, kstr);	    node.nmgr = safe;	    if (node != null && dbm != null)	        node.setDbMapping (dbm);	} else {	    String idfield =dbm.getIDField ();	    Statement stmt = null;	    try {	        Connection con = dbm.getConnection ();	        stmt = con.createStatement ();	        String[] columns = dbm.getColumns ();	        StringBuffer q = dbm.getSelect ();	        q.append ("WHERE ");	        q.append (idfield);	        q.append (" = ");	        q.append (kstr);	        if (logSql)	            app.logEvent ("### getNodeByKey: "+q.toString());	        ResultSet rs = stmt.executeQuery (q.toString());	        if (!rs.next ())	            return null;	        node = new Node (dbm, rs, columns, safe);	        if (rs.next ())	            throw new RuntimeException ("More than one value returned by query.");	    } finally {	        if (stmt != null) try {	            stmt.close ();	        } catch (Exception ignore) {}	    }	}	return node;    }