public void update(Recording recording) throws SQLException {
    Statement st = conn.createStatement();
    StringBuffer sb = new StringBuffer();
    sb.append("UPDATE recordings SET ");
    if (!(recording.getDownloadURL() == null)) {
      sb.append(" downloadurl = '");
      sb.append(recording.getDownloadURL());
      sb.append("' ");
    }
    if (!(recording.getTitle() == null)) {
      sb.append(", title = '");
      sb.append(recording.getTitle());
      sb.append("' ");
    }
    if (!(recording.getDescription() == null)) {
      sb.append(", description = '");
      sb.append(recording.getDescription());
      sb.append("' ");
    }
    if (!(recording.getFilename() == null)) {
      sb.append(", filename = '");
      sb.append(recording.getFilename());
      sb.append("' ");
    }
    if (!(recording.getFirstTried() == null)) {
      sb.append(", firsttry = '");
      sb.append(new java.sql.Timestamp(recording.getFirstTried().getTime()));
      sb.append("' ");
    }
    if (!recording.isComplete()) sb.append(", complete = FALSE ");
    else sb.append(", complete = TRUE ");
    sb.append("WHERE id = '");
    sb.append(recording.getId());
    sb.append("' AND filetype = '");
    sb.append(recording.getType());
    sb.append("'");

    LOG.debug(sb.toString());
    st.execute(sb.toString());
    st.close();
    st = null;

    conn.commit();
  }
  public void insert(Recording recording) throws SQLException {
    Statement st = conn.createStatement();
    StringBuffer sb = new StringBuffer();
    sb.append("INSERT INTO recordings VALUES('");
    sb.append(recording.getId());
    sb.append("', '");
    if (recording.getDownloadURL() == null) sb.append("");
    else sb.append(recording.getDownloadURL());
    sb.append("', '");
    if (recording.getTitle() == null) sb.append("");
    else sb.append(recording.getTitle());
    sb.append("', '");
    if (recording.getDescription() == null) sb.append("");
    else sb.append(recording.getDescription());
    sb.append("', '");
    if (recording.getFilename() == null) sb.append("");
    else sb.append(recording.getFilename());
    sb.append("', '");
    if (recording.getType() == 0) sb.append("");
    else sb.append(recording.getType());
    sb.append("', '");
    if (recording.getFirstTried() == null) sb.append("");
    else sb.append(new Timestamp(recording.getFirstTried().getTime()));
    sb.append("', ");
    if (!recording.isComplete()) sb.append("FALSE ");
    else sb.append("TRUE ");
    sb.append(")");
    LOG.debug(sb.toString());

    // execute the insert statement
    st.executeUpdate(sb.toString());
    st.close();
    st = null;

    conn.commit();
  }