private List<String> getColumnNames(String ntn) throws SQLException { UcanaccessConnection conn = UcanaccessConnection.getCtxConnection(); ntn = UcanaccessDatabaseMetadata.normalizeName(ntn); String pref = conn.getDbIO().getFile().getAbsolutePath(); Connection conq = conn.getHSQLDBConnection(); String key = pref + ntn; if (!columnNamesCache.containsKey(key)) { List<String> ar = new ArrayList<String>(); ResultSet rs = conq.getMetaData().getColumns(null, "PUBLIC", ntn, null); Map<Integer, String> tm = new TreeMap<Integer, String>(); while (rs.next()) { String cbase = rs.getString("COLUMN_NAME"); Integer i = rs.getInt("ORDINAL_POSITION"); tm.put(i, cbase.toUpperCase()); } ar.addAll(tm.values()); columnNamesCache.put(key, ar); } return columnNamesCache.get(key); }
public void insertRow(Table _table, Object[] _row) throws IOException { try { _table.addRow(newRow); } catch (ConstraintViolationException e) { List<? extends Column> lc = _table.getColumns(); boolean retry = false; for (Column cl : lc) { if (cl.isAutoNumber()) { retry = true; break; } } if (!retry) { throw e; } Database db = _table.getDatabase(); File fl = db.getFile(); DBReferenceSingleton dbsin = DBReferenceSingleton.getInstance(); DBReference ref = dbsin.getReference(fl); ref.reloadDbIO(); this.dbIO = ref.getDbIO(); _table = this.dbIO.getTable(this.tableName); _table.addRow(newRow); } }