我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。相关的知识,希望对你有一定的参考价值。

单独使用java可以访问数据库。而且返回值也正确。实在不知道是什么问题?
public UserBean GetUserInfo(String name, String password)
String user;
String code;
String result = null;
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:hsxqwfxc";
Connection con= DriverManager.getConnection(url,"sa","");
Statement stmt=con.createStatement();
ResultSet rs = stmt.executeQuery("select * from dengLu");

while (rs.next())
user = rs.getString(1);
code = rs.getString(2);

if (user.equals(name)&&code.equals(password))
result="OK";
break;
else
result="NotFound";


rs.close();
stmt.close();
con.close();
catch (Exception e)
result = "NaN";

return new UserBean(result);

resultset 获取列值是从1开始的 返回NaN是不是上面的代码出现异常导致result=NaN
会不会是表字段和你get的顺序有误呢 你可以在catch那块printstack出来 再寻求解决追问

在java里面写个main方法独立运行是正确的,能够访问数据库,也能返回值。
就是将java和flex整合的时候,只是返回catch里面的值。而不返回数据库的值。

追答

应该先厘清是代码的问题还是整合时出现的问题
直接在方法中return一个值,而把访问数据库的代码屏蔽掉,
如果返回值正常,则是访问数据库代码错了
如果还是错误,则有可能flex的代码部分出错 或是 配置有误 而这些没有体现在你的篇幅中 那就帮不了忙了

追问

按照你说的方法知道错在了这一步,错误提示为“SQLException”:
try
Connection con= DriverManager.getConnection("jdbc:odbc:hsxqwfxc","sa",""); //错在这一步
catch (SQLException e)
result="SQLException";

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序:)我确实是建立了数据源的啊,但为什么会有这个提示呢?

追答

百度一搜 有很多情况下会报这个错 逐一排查吧

追问

你解决问题的思路是正确的,我以前自己都不知道问题在哪,不停的百度,不停的找例子,到最后近乎绝望也没能解决问题。
现在学习了,所谓“授人以鱼不如授人以渔”。

参考技术A 你debug看看哪一步跳到异常的,再分析。
while (rs.next())
user = rs.getString(1);
code = rs.getString(2);
这段代码,我不知道你是做什么的,但是以我的经验,是不是应该从0开始呀?追问

运行没有异常,只是文件到了flex中的时候,返回值不正常

ActionScript Worker 中的 RemoteObject 类别名

【中文标题】ActionScript Worker 中的 RemoteObject 类别名【英文标题】:RemoteObject class aliases within ActionScript Worker 【发布时间】:2016-07-12 13:52:12 【问题描述】:

我有一个适用于 iOS 和 Android 的 Flex 移动应用。出于性能原因,我想将我的一些下载代码移动到 Worker 中。在调用 RemoteObject 以从服务器下载数据后,我有大约 20 个 Java 类被反序列化为 ActionScript。这些类中的每一个都有一个[RemoteClass(alias="com.mycompany.MyClass")] 元数据标签。在我的主应用程序中,这一切都很好。然而,在 Worker 中,它没有为每个类注册类别名。这意味着当我从服务器获取数据时,它都是通用的Object 类,而不是我自己的自定义 ActionScript 类。只有在使用 registerClassAlias("com.mycompany.MyClass", MyClass); 为 Worker 中的所有 20 个类手动重新注册这些类别名后,我才能正确处理数据。

我不喜欢我现在必须在两个不同的地方维护别名。有什么方法可以维护我的主 swf 和我的 Worker 之间的类别名?

【问题讨论】:

【参考方案1】:

这可能不是因为Worker 忘记了元数据,而是因为 Worker 在 AS3 方面是一个单独的应用程序。编译器会丢弃所有您未明确使用的类。

所以你有两个选择:

1) 在 Worker 中显式使用类

public class Worker extends ... 
    private static const FORCE_INCLUDE:Array = [MyClass1, MyClass2];

2) 使用 [ArrayElementType] 元数据,禁止编译器抛出类

public class Worker extends ... 
    [ArrayElementType("full.path.to.MyClass1")]
    [ArrayElementType("full.path.to.MyClass2")]
    public function Worker()  ... 

也可以直接在 Worker 类上而不是在 Worker 的构造函数上指定 ArrayElementType。

【讨论】:

以上是关于我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。的主要内容,如果未能解决你的问题,请参考以下文章

Flex:RemoteObject,传递命名参数

Flex RemoteObject 间歇性地无法调用 CFC

没有 services-config.xml 的 Flash RemoteObject Weborb 连接(没有 Flex)

ActionScript Worker 中的 RemoteObject 类别名

Flex AMFPHP 站点在 WAMP 2.2 中工作,但在 WAMP 2.4 中失败

Flex / AIR - 它可以接收 SYSLOG 通知吗?