Estou usando o hsqldb_1_8_0_5, assim:
public class Database {
public static final String DRIVER = "org.hsqldb.jdbcDriver";
public static final String URL = "jdbc:hsqldb:database;create=true;?user=sa&password=''";
public static Connection conn;
public Database(){
}
public static void connect(){
try{
Class.forName(DRIVER).newInstance();
conn = DriverManager.getConnection (URL);
}catch (ClassNotFoundException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}catch (IllegalAccessException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}catch (InstantiationException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}catch (SQLException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}
}
public static void disconnect(){
try{
conn.close();
}catch (SQLException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}
}
public static void createDatabase(){
String sql =
"CREATE TABLE INFO (" +
"COD INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL PRIMARY KEY ,"+" NAME VARCHAR(50) NOT NULL," + "DATA DATE NOT NULL,"+
"VALUE FLOAT NOT NULL," + "ANSWER BOOLEAN NOT NULL" +
")";
try{
Statement st = conn.createStatement();
st.execute(sql);
}catch (SQLException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}
}
public static void populateDatabase(int n){
for (int i=1;i<=n;i++){
String sql =
"INSERT INTO INFO (NAME,DATA,VALUE,ANSWER) VALUES ('BLA',CURRENT_DATE,100,'1')";
try{
Statement st = conn.createStatement();
st.execute(sql);
}catch (SQLException e){
System.err.println(e.getMessage());
System.err.println(e.getStackTrace());
}
}
}
//aqui tem outras operacoes com o banco (seleção, atualização...)
public static void main (String[] args){
Scanner input = new Scanner (System.in);
System.out.print("Entre com o numero de operações:");
int n = input.nextInt();
long inicioConexao = System.currentTimeMillis();
Database.connect();
Database.createDatabase();
Database.disconnect();
long fimConexao = System.currentTimeMillis() - inicioConexao;
long tempoConexao = (fimConexao/1000);
System.err.println("A criação foi concluída em "+fimConexao+" milisegundos, portanto "+tempoConexao+" segundos.");
long inicioInsere = System.currentTimeMillis();
Database.connect();
Database.populateDatabase(n);
Database.disconnect();
long fimInsere = System.currentTimeMillis() - inicioInsere;
long tempoInsere = (fimInsere/1000);
System.err.println("A Inserção foi concluída em "+fimInsere+" milisegundos, portanto "+tempoInsere+" segundos.");
//aqui tem metodo das outras operacoes com o banco (seleção, atualização...)
Ele cria as tabela sem erros pelo java , mas quando faço as outras operações (inserção, seleção, atualização, seleção, drop) ele da
esse erro: (no caso esse é o erro quando eu faço um insert)
Entre com o numero de operações:1
Table not found in statement [INSERT INTO INFO]
[Ljava.lang.StackTraceElement;@253498
A Inserção foi concluída em 609 milisegundos, portanto 0 segundos.
Nao sei o que ele quer dizer com statement
Quando uso o runManager, que eh uma interface grafica do banco, eu conecto normal e la consigo fazer as operacoes todas (criação, inserção, seleção, atualização, seleção, drop).
Se alguem tiver uma luz… nao sei mais o que eu faço, onde que ta o problema…
Obrigado