Q:

JOOQ create Table and insert values DSLContext

I'm trying to generate a Database using JOOQ
i do create a Table with this code:
CreateTableAsStep<Record> table = create.createTable("TestTable");
CreateTableColumnStep step = table.column("testColumn", SQLDataType. Integer);
step.execute();

this works fine, but when it comes to inserting data, i run into a problem
the doc includes the following example:
create.insertInto(AUTHOR)
      .set(AUTHOR.ID, 100)
      .set(AUTHOR.FIRST_NAME, "Hermann")
      .set(AUTHOR.LAST_NAME, "Hesse")
      .newRecord()
      .set(AUTHOR.ID, 101)
      .set(AUTHOR.FIRST_NAME, "Alfred")
      .set(AUTHOR.LAST_NAME, "Döblin")
      .execute();

here AUTHOR is not a simple String it expects a org.jooq. Table<R extends Record>
i thought there might be a return type when creating the table, but i did not find it.  Google did not help as Table is not the best word to search for ;-)
Question: how can i get to an instance of a Table - i do have its name as String? 

A:

You can always create Table references via DSL.table(String) or DSL.table(Name).  For example:
// Assuming this:
import static org.jooq.impl. DSL.*; 

create.insertInto(table(name("TestTable")))
      .set(field(name("testColumn")), 1)
      .execute();

Notice also my usage of DSL.field(Name). 
Plain SQL vs. Name references
It's worth reading up on the difference between creating dynamic table / field objects at runtime either with plain SQL strings (as in DSL.table(String)) or with name references (as in DSL.table(Name)).  Essentially:

Plain SQL strings are case-insensitive and subject to SQL injection
Name references are case-sensitive by default

In your case, as you probably created case sensitive table/column names, you should prefer the latter.  More info can be found here:

http://www.jooq.org/doc/latest/manual/sql-building/plain-sql
http://www.jooq.org/doc/latest/manual/sql-building/names

