SFSDBManager class and Example Programs (com.smartfoxserver.v2.db.SFSDBManager)
SFSDBManager
                 com.smartfoxserver.v2.db.SFSDBManager is a class
                which implements IDBManager interface and
                  com.smartfoxserver.bitswarm.service.IService provided
                by the SFS2X platform.
 com.smartfoxserver.v2.db.SFSDBManager is a class
                which implements IDBManager interface and
                  com.smartfoxserver.bitswarm.service.IService provided
                by the SFS2X platform.
              
                 It manages the connection to a database using either
                JDBC native drivers or JDBC-ODBC bridge and providing
                configurable connection pooling for optimal performance and
                resource usage.
 It manages the connection to a database using either
                JDBC native drivers or JDBC-ODBC bridge and providing
                configurable connection pooling for optimal performance and
                resource usage.
              
                 Each Zone runs its own DbManager which can be
                configured via the Zone Configurator module in the SFS2X
                AdminTool. Additionally a Zone can instantiate multiple
                DbManagers via server side code.
 Each Zone runs its own DbManager which can be
                configured via the Zone Configurator module in the SFS2X
                AdminTool. Additionally a Zone can instantiate multiple
                DbManagers via server side code.
              
SFSDBManager
| Sno | Method | Syntax | 
| 1 | getConnection() | public Connection getConnection() throws SQLException it will returns the sql.Connection instance with the specified drivers details at zone file. | 
| 2 | executeInsert() | public Object executeInsert(String sql, Object[] params)
                      throws SQLException Executes a SQL INSERT command returning the key of the inserted row | 
| 3 | executeUpdate() | void executeUpdate(java.lang.String sql) void executeUpdate(java.lang.String sql, java.lang.Object[] params) Executes a non-query SQL command such as INSERT, UPDATE, DELETE etc... | 
| 4 | executeQuery() | 1) ISFSArray executeQuery(java.lang.String sql) 2) ISFSArray executeQuery(java.lang.String sql, java.lang.Object[] params) Perform a SQL query and return a structured object based on SFSArray and SFSObject | 
| 5 | getActiveConnections() | public int getActiveConnections() Get the number of pooled connections currently active | 
| 6 | isActive() | public boolean isActive() True if the Service is active | 
| 7 | getIdleConnections() | int getIdleConnections() Get the number of pooled connections currently idle | 
| 8 | getConfig() | DBConfig getConfig() Get the configuration details of the JDBC connection and connection pool | 
Sample Code Snippet to Illustrate above methods
 SFSDBManager.executeQuery() Code Snippet
 SFSDBManager.executeQuery() Code Snippet
              private void executeQueryExample() {
  try {
    IDBManager dbm = getParentZone().getDBManager();
    String query= "Select userid,password,chips,emailid,website from users";
    ISFSArray ret = dbm.executeQuery(query);
    StringBuffer msg = new StringBuffer();
    if (ret != null) {
      msg.append(" No Of Users Found "+ret.size()+"\n");
      for (int i = 0; i < ret.size(); i++) {
        ISFSObject temp = ret.getSFSObject(i);
        msg.append((i + 1) + "\tuserid" + temp.getUtfString("userid")
            + "\t password " + temp.getUtfString("password")
            + "\t chips " + temp.getDouble("chips")
            + "\t emailid " + temp.getUtfString("emailid")
            + "\n");
      }
    } else {
      msg.append("NO records");
      }
      trace(msg.toString());
    } catch (SQLException e) {
      e.printStackTrace();
    }
}
               SFSDBManager.executeUpdate() Code Snippet
 SFSDBManager.executeUpdate() Code Snippet
              private void executeUpdateExample() {
    try {
      SFSDBManager dbm = (SFSDBManager) getParentZone().getDBManager();
      dbm.executeUpdate("update users set website=?",
          new Object[] { "www.tutorialtous.com" });
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
               SFSDBManager.executeInsert() Code Snippet
 SFSDBManager.executeInsert() Code Snippet
              private void executeInsertExample(String userid, String password, Double chips, String emailid) {
    try {
      SFSDBManager dbm = (SFSDBManager) getParentZone().getDBManager();
      String query="insert into users(userid,password,regdate,chips,emailid) values(?,?,?,?,?)";
      Object obj = dbm.executeInsert(query,
              new Object[] { userid, password, new Date(), chips, emailid });
      
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
               SFSDBManager.getDBConfig(),getActiveConnections(),getIdleConnections()
                Code Snippet
                SFSDBManager.getDBConfig(),getActiveConnections(),getIdleConnections()
                Code Snippet
              private void echoDbconnectionDetails() {
    try {
      SFSDBManager dbm = (SFSDBManager) getParentZone().getDBManager();
      DBConfig dbcfg = dbm.getConfig();
      trace("**** Db Configured With These Details ****");
      trace("Is Active: " + dbcfg.active + "\t Db Connection URL "
          + dbcfg.connectionString);
      trace("Driver Name: " + dbcfg.driverName
          + "\t MaxActiveConnections " + dbcfg.maxActiveConnections);
      trace("UserName: " + dbcfg.userName + "\t MaxActiveConnections "
          + dbcfg.maxActiveConnections);
      trace("TestSQL: " + dbcfg.testSql);
      trace("**** Done Db Configured With These Details Done ****");
      trace("**** getActiveConnections " + dbm.getActiveConnections());
      trace("**** getIdleConnections " + dbm.getIdleConnections());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
              Note
trace() method is similar to System.out.println() it will echos the msg to console as well as log file.
