您的位置:首页 > 数据库 > MySQL

SmartFoxServer 扩展连接MYSQL

2009-02-24 09:03 369 查看
SmartFoxServer 扩展连接MYSQL

由于项目的需要,最近几天一直在弄SmartFoxServer,SmartFoxServer真的非常棒,从接触它就发现深深的喜欢上了它,功能也非常强大,基于SmartFoxServer开发应用相对也比较简单,目前SmartFoxServer的中文文档资料在网上也非常的多。下面就SmartFoxServer扩展应用连接MYSQL遇到的问题讲一下,主要是自己做下笔记,方便以后查阅。

SmartFoxServer中 MYSQL数据库配置:

一:将MYSQL数据库驱动拷贝至SmartFoxServerPRO/jre/lib/ext目录中。

二:在对应的Zone中添加如下配置:

<DatabaseManager active="true">
<Driver>com.mysql.jdbc.Driver</Driver>
<ConnectionString>jdbc:mysql://localhost:3306/test</ConnectionString>
<UserName>root</UserName>
<Password></Password>
<TestSQL><![CDATA[SELECT COUNT(*) FROM user]]></TestSQL>
<MaxActive>10</MaxActive>
<MaxIdle>10</MaxIdle>
<OnExhaustedPool>fail</OnExhaustedPool>
<BlockTime>5000</BlockTime>
</DatabaseManager>

这样SmartFoxServer就可以连接上MYSQL了,我之前一直配置不成功就是出现在<Driver>com.mysql.jdbc.Driver</Driver>这里,还有这里需设置为 active="true",我只记下需注意的地方,关于详细配置官方有详细文档 http://www.smartfoxserver.com/_cn/docs/。
SmartFoxServer扩展中连接MYSQL,进行操作:

关于用AS编写的扩展文件需要保存在 sfsExtensions/ 目录下,这个目录也是 SmartFoxServer PRO 中所有扩展的根目录。例如我们编写了一个AS脚本命名为dbMysql.as,那么怎么使用这个扩展脚本呢?我们只需要在config.xml 配置文件中你需要的使用的Zone中,添加<Extensions> <extension name="dbmysql" className="dbMysql.as" type="script" /></Extensions>,就配置上了。

客户端调用:

smartfox= new SmartFoxClient(true);

1:smartfox.addEventListener(SFSEvent.onExtensionResponse, onExtensionResponseHandler);客户端连接监听“SFSEvent.onExtensionResponse”。

2:smartfox.sendXtMessage( "dbmysql", "getUsers", {});

3:public function onExtensionResponseHandler(evt:SFSEvent):void {}//响应回调方法

服务器端:

/*
* dbMysql.as
*/
------------------------------------------------------------------------------------------------------------
// a global variable
var dbase

function init()
{
dbase = _server.getDatabaseManager()
}

function destroy()
{
delete dbase
}

function handleRequest(cmd, params, user, fromRoom)
{
if (cmd == "getUsers")
{
var t1 = getTimer()
var sql = "SELECT * FROM user";
queryRes = dbase.executeQuery(sql)
var t2 = getTimer()
var response = {}
response._cmd = "getUsers"
response.db = []
if (queryRes != null)
{
for (var i = 0; i < queryRes.size(); i++)
{
var tempRow = queryRes.get(i)
var item = {}
item.name = tempRow.getItem("name")
item.pwd = tempRow.getItem("pwd")
item.id = tempRow.getItem("id")
response.db.push( item )
}
}
else
trace("DB Query failed")
_server.sendResponse(response, -1, null, [user])

}
}

function handleInternalEvent(evt)
{
trace("Event received: " + evt.name)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: