When I try to getBool from the results everything goes wrong.
24 Oct 2011 20:13:54,828 INFO [com.smartfoxserver.v2.controllers.ExtensionController-1] protocol.serialization.DefaultSFSDataSerializer - Skipping Unsupported SQL TYPE: -7, Column:gamestate
24 Oct 2011 20:13:54,843 ERROR [com.smartfoxserver.v2.controllers.ExtensionController-1] v2.controllers.ExtensionController -
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Exception: java.lang.NullPointerException
Message: *** Null ***
Description: Error while handling client request in extension: { Ext: Logont1Extension, Type: JAVA, Lev: ZONE, { Zone: USNLOGIN }, {} }
Extension Cmd: getgameinfo
+--- --- ---+
Stack Trace:
+--- --- ---+
sfs2x.extension.ggwarfare.handler.getgameinfoReqHandler.handleClientRequest(getgameinfoReqHandler.java:67)
com.smartfoxserver.v2.extensions.SFSExtension.handleClientRequest(SFSExtension.java:192)
com.smartfoxserver.v2.controllers.ExtensionController.processRequest(ExtensionController.java:137)
com.smartfoxserver.bitswarm.controllers.AbstractController.run(AbstractController.java:96)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Code: Select all
package sfs2x.extension.ggwarfare.handler;
import com.smartfoxserver.v2.core.ISFSEvent;
import com.smartfoxserver.v2.entities.User;
import com.smartfoxserver.v2.entities.data.ISFSObject;
import com.smartfoxserver.v2.entities.data.SFSArray;
import com.smartfoxserver.v2.entities.data.SFSDataWrapper;
import com.smartfoxserver.v2.entities.data.SFSObject;
import com.smartfoxserver.v2.exceptions.SFSException;
import com.smartfoxserver.v2.extensions.BaseClientRequestHandler;
import com.smartfoxserver.v2.extensions.BaseServerEventHandler;
import com.smartfoxserver.v2.extensions.SFSExtension;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class getgameinfoReqHandler extends BaseClientRequestHandler{
public int ggamenumber;
public int gamestate;
@Override
public void handleClientRequest(User sender, ISFSObject params)
{
String username = params.getUtfString("user");
try
{
Connection conn = getParentExtension().getParentZone().getDBManager().getConnection();
// This will strip potential SQL injections
PreparedStatement sql = conn.prepareStatement("SELECT gamenumber FROM users WHERE username = ?");
sql.setString(1, username);
//Obtain ResultSet as integers
ResultSet result = sql.executeQuery();
//Put the result into an SFSobject array
SFSArray row = SFSArray.newFromResultSet(result);
ggamenumber = row.getSFSObject(0).getInt("gamenumber");
PreparedStatement sql2 = conn.prepareStatement("SELECT gamestate, players, gametype FROM gamehead WHERE idGame1 = ?");
sql2.setInt(1, ggamenumber);
//Obtain ResultSet as integers
ResultSet result2 = sql2.executeQuery();
//Put the result into an SFSobject array
SFSArray row2 = SFSArray.newFromResultSet(result2);
//Populate dem variables
gamestate = row2.getSFSObject(0).getBool("gamestate");
// Create a response object
ISFSObject resObj = SFSObject.newInstance();
resObj.putInt("gamestate", gamestate);
// Send it back
send("getgameinfo", resObj, sender);
//make sure you close the database connection when you're done with it, especially if you've
//set a low number of maximum connections
//conn.close();
} catch (SQLException ex) {
Logger.getLogger(getstatsReqHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
In the log I see the unsupported SQL type -7. I tried changing the getBool to getInt, being mysql is storing the column as a tinyint. but get the same or a similar error. Is there a way to use boolean with smartfox and mysql?
I could use and integer to do nearly the same thing. I am just thinking that sending a bool is a smaller object then sending an Int, correct me if I am wrong there. I'm new at this so could have done everything wrong.