2017-07-19 8 views
0

管理コンソールでGlassFishサーバーを構成し、JDBC接続プールとJDBCリソースを追加しました。 GlassFishから管理コンソールにpingを実行すると、succesが動作します。私は、データベースオブジェクトを作成し、挿入メソッドをデータベースクラスから呼び出しています。GlassFishサーバーjdbcがレコードをデータベースに挿入できません

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(); 
       } 
      } 
     } 
} 

私の問題は、MySQLデータベースに挿入されたものではありません:

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); 

はここDatabaseクラスから私の挿入方法です。私はGlassFish Serverなしでこの挿入サンプルを試してみました。誰かが問題を知っていますか?

+0

はあなたの問題を検討していますが、ハードコーディング資格情報をCOMMENT-オフトピックは非常に悪い考えです:私は、データソースの一部を忘れてしまいました。 JNDIリソースを作成してサーバーから描画してください(正直なところ、jdbcリソースよりも簡単です) –

+0

最後のコメントを削除しました。コメントはどうすればよいですか?ACCredntialsには3つの列がありますか? –

+1

これは本当ですが、ACCredentialsには3つの列があります。 – Hakikat41

答えて

0

私は実際にこの問題を解決しました。

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) { 

     } 
関連する問題