分不是问题,200分送上!只要解决方案!!
报如下两个异常
Error #2044: 未处理的 ioError:。 text=Error #2031: Socket 错误。 URL: localhost
Error #2044: 未处理的 ioError:。 text=Error #2048: 安全沙箱冲突:file:///D:/workplaceflec/FlexTest/bin-debug/ConnectMySql.swf 不能从 localhost:8080 加载数据。
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:assql="com.maclema.mysql.mxml.*" applicationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import com.maclema.mysql.ResultSet;
import mx.rpc.AsyncResponder;
import com.maclema.mysql.MySqlToken;
import mx.controls.Alert;
import com.maclema.mysql.events.MySqlErrorEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
private var conn:Connection;
private var sql:String = "select * from ...";
private function onCreationComplete():void{
conn = new Connection("localhost",8080,"root","admin","数据库");
conn.addEventListener(Event.CONNECT,handleConnected);
conn.addEventListener(MySqlErrorEvent.SQL_ERROR,handleError);
conn.connect();
}
private function handleConnected(event:Event):void{
var st:Statement = conn.createStatement();
var token:MySqlToken = st.executeQuery(sql);
token.addResponder(new AsyncResponder(
function(data:Object,token:Object):void{
var rs:ResultSet = ResultSet(data);
Alert.show("记录数:"+rs.size()+"条");
},
function(info:Object,token:Object):void{
Alert.show("错误信息:"+info);
},
token
));
}
private function handleError(event:MySqlErrorEvent):void{
Alert.show(event.text);
}
]]>
</mx:Script>
<!--标签式Mysql驱动
<assql:MySqlService id="service">
</assql:MySqlService>
-->
</mx:Application>
25 个解决方案
#1
#2
没有高手尝试过??
#3
ioError错误,你需要处理conn实例的错误异常,你没有处理这个异常所以ide抛这个错误了,这个不是主要问题,主要问题在于你的安全策略的问题,自己先看看flash的安全策略相关的东西就了解了。
#4
感谢3楼的回答
第一个IO错误是我当时贴代码的时候贴错了一个版本,已经解决
第二个安全沙箱问题:我也知道是安全策略上的问题,需要一个安全策略文件
但是它不同于一般socket的安全沙箱问题,只要在服务端放个安全策略文件就行了
由于是客户端直接连接数据库,这就相当于没有服务端,只有客户端!
那这个时候有该怎么处理??没有这方面的经验,只是对抛弃后台这种技术有点好奇才尝试了下
以上是我的理解,欢迎各路高手指错~~~~
第一个IO错误是我当时贴代码的时候贴错了一个版本,已经解决
第二个安全沙箱问题:我也知道是安全策略上的问题,需要一个安全策略文件
但是它不同于一般socket的安全沙箱问题,只要在服务端放个安全策略文件就行了
由于是客户端直接连接数据库,这就相当于没有服务端,只有客户端!
那这个时候有该怎么处理??没有这方面的经验,只是对抛弃后台这种技术有点好奇才尝试了下
以上是我的理解,欢迎各路高手指错~~~~
#5
#6
客房端直接连的话,数据库应该有远程支持的吧,感觉写法和本地连是有区别的,个人理解
#7
当然是有区别的,我在4楼已经说明了
这论坛的高手都去哪了??来个能提供解决方案的人!!!!!!!1
#8
我的贴,你不能就怎么沉了!!!
#9
额,在本地放个策略文件呢,直连的话,我的理解,其实客户端就是后台了,
#10
放了N久的帖子,突然记起来了,冒个泡再结贴!
顺便贴上正确代码
conn = new Connection("localhost", 3306,"root","admin","数据库");
居然就这样搞定了!! 自我BS下,太大意了
O(∩_∩)O~~~
顺便贴上正确代码
conn = new Connection("localhost", 3306,"root","admin","数据库");
居然就这样搞定了!! 自我BS下,太大意了
O(∩_∩)O~~~
#11
好东西就得留名啊,谢谢啊
#12
呵呵~~
#13
assql很强大啊
#14
楼主,我前几天也为了这个安全问题搞得焦头烂额的,有2个经验,希望能帮助大家:
(1)如果访问server端数据,需要把crossdomain。xml放到根目录(默认会找这个路径),也可以指定其他的server路径,但是需要追加代码在flex里面:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://server.com/crossdomain.xml");
(2)
crossdomain.xml里面一定要做好控制,最开放的设置是:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
呵呵,要是有问题,可以联系我,:)
(1)如果访问server端数据,需要把crossdomain。xml放到根目录(默认会找这个路径),也可以指定其他的server路径,但是需要追加代码在flex里面:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://server.com/crossdomain.xml");
(2)
crossdomain.xml里面一定要做好控制,最开放的设置是:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
呵呵,要是有问题,可以联系我,:)
#15
对了,如果是本地的话,如果是asp,用的是IIS,需要把crossdomain.xml放到IISroot路径就行了,呵呵,这个我没有测试过,只做提示用。。。。
#16
#17
学习Flex。
#18
#19
本地的还真的没试过,用过 wenorb与foluninex
#20
那就奇怪了,楼主之前的设置时因为把数据库的端口设置错误,但我现在设置对的,确还是报跟你第二个一样的错误,安全沙箱问题。我用的是AS项目。
#21
收藏下吧,好东西··
#22
#23
收藏下,现在在做和Flex相关的项目。
#24
对我有用
#25
楼主说的是这样吗?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:assql="com.maclema.mysql.mxml.*" applicationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import com.maclema.mysql.ResultSet;
import mx.rpc.AsyncResponder;
import com.maclema.mysql.MySqlToken;
import mx.controls.Alert;
import com.maclema.mysql.events.MySqlErrorEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
private var conn:Connection;
private var sql:String = "select * from ...";
private function onCreationComplete():void{
conn = new Connection("localhost",3306,"root","admin","数据库");
conn.addEventListener(Event.CONNECT,handleConnected);
conn.addEventListener(MySqlErrorEvent.SQL_ERROR,handleError);
conn.connect();
}
private function handleConnected(event:Event):void{
var st:Statement = conn.createStatement();
var token:MySqlToken = st.executeQuery(sql);
token.addResponder(new AsyncResponder(
function(data:Object,token:Object):void{
var rs:ResultSet = ResultSet(data);
Alert.show("记录数:"+rs.size()+"条");
},
function(info:Object,token:Object):void{
Alert.show("错误信息:"+info);
},
token
));
}
private function handleError(event:MySqlErrorEvent):void{
Alert.show(event.text);
}
]]>
</mx:Script>
<!--标签式Mysql驱动
<assql:MySqlService id="service">
</assql:MySqlService>
-->
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:assql="com.maclema.mysql.mxml.*" applicationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import com.maclema.mysql.ResultSet;
import mx.rpc.AsyncResponder;
import com.maclema.mysql.MySqlToken;
import mx.controls.Alert;
import com.maclema.mysql.events.MySqlErrorEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
private var conn:Connection;
private var sql:String = "select * from ...";
private function onCreationComplete():void{
conn = new Connection("localhost",3306,"root","admin","数据库");
conn.addEventListener(Event.CONNECT,handleConnected);
conn.addEventListener(MySqlErrorEvent.SQL_ERROR,handleError);
conn.connect();
}
private function handleConnected(event:Event):void{
var st:Statement = conn.createStatement();
var token:MySqlToken = st.executeQuery(sql);
token.addResponder(new AsyncResponder(
function(data:Object,token:Object):void{
var rs:ResultSet = ResultSet(data);
Alert.show("记录数:"+rs.size()+"条");
},
function(info:Object,token:Object):void{
Alert.show("错误信息:"+info);
},
token
));
}
private function handleError(event:MySqlErrorEvent):void{
Alert.show(event.text);
}
]]>
</mx:Script>
<!--标签式Mysql驱动
<assql:MySqlService id="service">
</assql:MySqlService>
-->
</mx:Application>
#1
#2
没有高手尝试过??
#3
ioError错误,你需要处理conn实例的错误异常,你没有处理这个异常所以ide抛这个错误了,这个不是主要问题,主要问题在于你的安全策略的问题,自己先看看flash的安全策略相关的东西就了解了。
#4
感谢3楼的回答
第一个IO错误是我当时贴代码的时候贴错了一个版本,已经解决
第二个安全沙箱问题:我也知道是安全策略上的问题,需要一个安全策略文件
但是它不同于一般socket的安全沙箱问题,只要在服务端放个安全策略文件就行了
由于是客户端直接连接数据库,这就相当于没有服务端,只有客户端!
那这个时候有该怎么处理??没有这方面的经验,只是对抛弃后台这种技术有点好奇才尝试了下
以上是我的理解,欢迎各路高手指错~~~~
第一个IO错误是我当时贴代码的时候贴错了一个版本,已经解决
第二个安全沙箱问题:我也知道是安全策略上的问题,需要一个安全策略文件
但是它不同于一般socket的安全沙箱问题,只要在服务端放个安全策略文件就行了
由于是客户端直接连接数据库,这就相当于没有服务端,只有客户端!
那这个时候有该怎么处理??没有这方面的经验,只是对抛弃后台这种技术有点好奇才尝试了下
以上是我的理解,欢迎各路高手指错~~~~
#5
#6
客房端直接连的话,数据库应该有远程支持的吧,感觉写法和本地连是有区别的,个人理解
#7
当然是有区别的,我在4楼已经说明了
这论坛的高手都去哪了??来个能提供解决方案的人!!!!!!!1
#8
我的贴,你不能就怎么沉了!!!
#9
额,在本地放个策略文件呢,直连的话,我的理解,其实客户端就是后台了,
#10
放了N久的帖子,突然记起来了,冒个泡再结贴!
顺便贴上正确代码
conn = new Connection("localhost", 3306,"root","admin","数据库");
居然就这样搞定了!! 自我BS下,太大意了
O(∩_∩)O~~~
顺便贴上正确代码
conn = new Connection("localhost", 3306,"root","admin","数据库");
居然就这样搞定了!! 自我BS下,太大意了
O(∩_∩)O~~~
#11
好东西就得留名啊,谢谢啊
#12
呵呵~~
#13
assql很强大啊
#14
楼主,我前几天也为了这个安全问题搞得焦头烂额的,有2个经验,希望能帮助大家:
(1)如果访问server端数据,需要把crossdomain。xml放到根目录(默认会找这个路径),也可以指定其他的server路径,但是需要追加代码在flex里面:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://server.com/crossdomain.xml");
(2)
crossdomain.xml里面一定要做好控制,最开放的设置是:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
呵呵,要是有问题,可以联系我,:)
(1)如果访问server端数据,需要把crossdomain。xml放到根目录(默认会找这个路径),也可以指定其他的server路径,但是需要追加代码在flex里面:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://server.com/crossdomain.xml");
(2)
crossdomain.xml里面一定要做好控制,最开放的设置是:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
呵呵,要是有问题,可以联系我,:)
#15
对了,如果是本地的话,如果是asp,用的是IIS,需要把crossdomain.xml放到IISroot路径就行了,呵呵,这个我没有测试过,只做提示用。。。。
#16
#17
学习Flex。
#18
#19
本地的还真的没试过,用过 wenorb与foluninex
#20
那就奇怪了,楼主之前的设置时因为把数据库的端口设置错误,但我现在设置对的,确还是报跟你第二个一样的错误,安全沙箱问题。我用的是AS项目。
#21
收藏下吧,好东西··
#22
#23
收藏下,现在在做和Flex相关的项目。
#24
对我有用
#25
楼主说的是这样吗?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:assql="com.maclema.mysql.mxml.*" applicationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import com.maclema.mysql.ResultSet;
import mx.rpc.AsyncResponder;
import com.maclema.mysql.MySqlToken;
import mx.controls.Alert;
import com.maclema.mysql.events.MySqlErrorEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
private var conn:Connection;
private var sql:String = "select * from ...";
private function onCreationComplete():void{
conn = new Connection("localhost",3306,"root","admin","数据库");
conn.addEventListener(Event.CONNECT,handleConnected);
conn.addEventListener(MySqlErrorEvent.SQL_ERROR,handleError);
conn.connect();
}
private function handleConnected(event:Event):void{
var st:Statement = conn.createStatement();
var token:MySqlToken = st.executeQuery(sql);
token.addResponder(new AsyncResponder(
function(data:Object,token:Object):void{
var rs:ResultSet = ResultSet(data);
Alert.show("记录数:"+rs.size()+"条");
},
function(info:Object,token:Object):void{
Alert.show("错误信息:"+info);
},
token
));
}
private function handleError(event:MySqlErrorEvent):void{
Alert.show(event.text);
}
]]>
</mx:Script>
<!--标签式Mysql驱动
<assql:MySqlService id="service">
</assql:MySqlService>
-->
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:assql="com.maclema.mysql.mxml.*" applicationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import com.maclema.mysql.ResultSet;
import mx.rpc.AsyncResponder;
import com.maclema.mysql.MySqlToken;
import mx.controls.Alert;
import com.maclema.mysql.events.MySqlErrorEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
private var conn:Connection;
private var sql:String = "select * from ...";
private function onCreationComplete():void{
conn = new Connection("localhost",3306,"root","admin","数据库");
conn.addEventListener(Event.CONNECT,handleConnected);
conn.addEventListener(MySqlErrorEvent.SQL_ERROR,handleError);
conn.connect();
}
private function handleConnected(event:Event):void{
var st:Statement = conn.createStatement();
var token:MySqlToken = st.executeQuery(sql);
token.addResponder(new AsyncResponder(
function(data:Object,token:Object):void{
var rs:ResultSet = ResultSet(data);
Alert.show("记录数:"+rs.size()+"条");
},
function(info:Object,token:Object):void{
Alert.show("错误信息:"+info);
},
token
));
}
private function handleError(event:MySqlErrorEvent):void{
Alert.show(event.text);
}
]]>
</mx:Script>
<!--标签式Mysql驱动
<assql:MySqlService id="service">
</assql:MySqlService>
-->
</mx:Application>