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.

> 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.

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
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
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
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
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.