2017-07-19 2 views
0

Ich habe meinen GlassFish Server über die Administrationskonsole konfiguriert und die JDBC Verbindungspools und JDBC Ressourcen hinzugefügt. Das Pingen über die Administrationskonsole von GlassFish funktioniert mit Erfolg. Ich erstelle das Database-Objekt und rufe die Einfügemethode aus der Database-Klasse auf.GlassFish Server jdbc kann keine Datensätze in die Datenbank einfügen

Database database = new Database(); 
BigInteger acSerial = att.getSerialNumber(); 
BigInteger pkcSerial = att.getHolder().getSerialNumber(); 
String AC = Base64.getUrlEncoder().encodeToString(att.getEncoded()); 
database.inserting(acSerial,pkcSerial,AC); 

Hier ist meine Einführungsmethode aus der Datenbank Klasse:

public class Database { 
     // JDBC driver name and database URL 
     static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
     static final String DB_URL = "jdbc:mysql://localhost:3306/AC?autoReconnect=true&useSSL=false"; 

     // Database credentials 
     static final String USER = "XXXXXX"; 
     static final String PASS = "XXXXXXXX"; 

     public void inserting(BigInteger acparam, BigInteger pkcparam, String encoded) { 
      Connection conn = null; 
      Statement stmt = null; 
      try{ 
       //STEP 2: Register JDBC driver 
       Class.forName("com.mysql.jdbc.Driver"); 
       //STEP 3: Open a connection 
       conn = DriverManager.getConnection(DB_URL, USER, PASS); 
       //STEP 4: Execute a query 
       stmt = conn.createStatement(); 

       String sql = "INSERT INTO ACCredentials " + "VALUES (" +acparam +"," +pkcparam +"," +"'"+encoded+"'" +")" + ""; 
       stmt.executeUpdate(sql); 
      }catch(SQLException se){ 
       //Handle errors for JDBC 
       se.printStackTrace(); 
      }catch(Exception e){ 
       //Handle errors for Class.forName 
       e.printStackTrace(); 
      }finally{ 
       //finally block used to close resources 
       try{ 
        if(stmt!=null) 
         conn.close(); 
       }catch(SQLException se){ 
       } 
       try{ 
        if(conn!=null) 
         conn.close(); 
       }catch(SQLException se){ 
        se.printStackTrace(); 
       } 
      } 
     } 
} 

Mein Problem ist, nichts in die MySQL-Datenbank eingefügt. Ich habe dieses Einfügebeispiel ohne GlassFish Server ausprobiert und es hat funktioniert. Weiß jemand das Problem?

+0

Blick in Ihr Problem, aber ein off-topic-Kommentar-harte Codierung Anmeldeinformationen ist eine sehr schlechte Idee. Versuchen Sie, eine JNDI-Ressource zu erstellen und sie vom Server zu zeichnen (einfacher als jdbc-Ressourcen, um ehrlich zu sein) –

+0

Ich löschte den letzten Kommentar, was ich hätte kommentieren müssen - ACCredntials hat 3 Spalten richtig? –

+1

das stimmt, ACCredentials hat 3 Spalten. – Hakikat41

Antwort

0

Ich löste das Problem tatsächlich. Ich habe den DataSource-Teil vergessen:

public void inserting(BigInteger acparam, BigInteger pkcparam, String encoded) throws NamingException { 
     InitialContext ctx; 
     DataSource ds; 
     Connection conn = null; 
     Statement stmt = null; 
     ResultSet rs = null; 
     try { 
      ctx = new InitialContext(); 
      ds = (DataSource) ctx.lookup("jdbc/MeinDatasourceJndiName"); 
      //ds = (DataSource) ctx.lookup("jdbc/MySQLDataSource"); 
      conn = ds.getConnection(); 
      stmt = conn.createStatement(); 
      String sql = "INSERT INTO ACCredentials " + "VALUES (" +acparam +"," +pkcparam +"," +"'"+encoded+"'" +")" + ""; 
      //rs = stmt.executeQuery(sql); 
      stmt.executeUpdate(sql); 


      while(rs.next()) { 
      } 
     } 
     catch (SQLException se) { 

     } 
Verwandte Themen