lo uppo perchè ci sono novità ma comunque non ho ancora capito del tutto come fare.
Ricapitolando, escludendo i vari metodi che ho implementato, ho creato una classe di lancio che mi deve fare una insert in un db access.
codice:
// PROVA INSERIMENTO
int righeInserite;
Statement st=null;
Connection connessione=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connessione = DriverManager.getConnection("jdbc:odbc:deposito");
st=connessione.createStatement();
String sql="INSERT INTO articoli (codice,descrizione,quantita,prezzo) VALUES ('0090','scanner',1000,45);";
System.out.println(sql);
righeInserite=st.executeUpdate(sql);
System.out.println("righeInserite= "+righeInserite);
//connessione.commit();
//connessione.close();
boolean a=connessione.getAutoCommit();
System.out.println("a= "+a);
}
catch (SQLException ex)
{
ex.printStackTrace();
System.out.println("errore, metodo elenca,sql");
}
catch (ClassNotFoundException ex1)
{
ex1.printStackTrace();
System.out.println("errore 2");
}
finally
{
if (st!=null)
{ try
{
st.close();
}
catch (SQLException ex2)
{
System.out.println("errore di chiusura");
}
}
}
ottengo come output:
INSERT INTO articoli (codice,descrizione,quantita,prezzo) VALUES ('0090','scanner',1000,45);
righeInserite= 1
a= true
purtroppo l'inserimento è solo virtuale, nonostante l'autocommit i dati sul db non vengono inseriti.
Se poi disasterisco connessione.close ottengo
codice:
// PROVA INSERIMENTO
int righeInserite;
Statement st=null;
Connection connessione=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connessione = DriverManager.getConnection("jdbc:odbc:deposito");
st=connessione.createStatement();
String sql="INSERT INTO articoli (codice,descrizione,quantita,prezzo) VALUES ('0090','scanner',1000,45);";
System.out.println(sql);
righeInserite=st.executeUpdate(sql);
System.out.println("righeInserite= "+righeInserite);
//connessione.commit();
connessione.close();
boolean a=connessione.getAutoCommit();
System.out.println("a= "+a);
}
catch (SQLException ex)
{
ex.printStackTrace();
System.out.println("errore, metodo elenca,sql");
}
catch (ClassNotFoundException ex1)
{
ex1.printStackTrace();
System.out.println("errore 2");
}
finally
{
if (st!=null)
{ try
{
st.close();
}
catch (SQLException ex2)
{
System.out.println("errore di chiusura");
}
}
}
e come output:
INSERT INTO articoli (codice,descrizione,quantita,prezzo) VALUES ('0090','scanner',1000,45);
righeInserite= 1
java.sql.SQLException: Connection is closed
at sun.jdbc.odbc.JdbcOdbcConnection.validateConnectio n(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.getAutoCommit(Unk nown Source)
errore, metodo elenca,sql
at myorm.Lancio.main(Lancio.java:174)
ma come per magia stavolta i dati sono stati inseriti?
com'è possibile tutto questo?