【发布时间】:2017-06-30 09:15:09
【问题描述】:
这个想法是将查询传递给远程方法,让该远程方法执行它并将结果集发送回调用方法。
这里是调用者方法
btnOK.setOnAction((e)-> {
String query = "SELECT * FROM schoolmanagement.director;";
System.out.println("Calling RMI");
try {
Registry registry = LocateRegistry.getRegistry("localhost");
RMIInterface rmi = (RMIInterface)registry.lookup("remoteObject");
System.out.println(rmi.Query(query));
} catch (RemoteException e2) {
e2.printStackTrace();
} catch (NotBoundException e1) {
e1.printStackTrace();
}
});
这里是远程方法
public String Query(String query) throws RemoteException {
try {
Connection mycon = DriverManager.getConnection("jdbc:mysql://localhost:3306/schoolmanagement", "root", "root");
Statement mystatement = mycon.createStatement();
ResultSet rs = mystatement.executeQuery(query);
while(rs.next()){
System.out.println(rs.getString("Name") + " "+ rs.getString("Age"));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
我知道rs 不可序列化。我该如何解决这个问题?
【问题讨论】:
-
它也不是
String。没有多大意义。 -
@EJP return rs 直到我得到解决方案。当方法是 String 类型时,我实际上并没有尝试返回对象。
-
那你在说什么?你的标题说 pass
ResultSetto 一个远程方法,你的问题说 return it from 一个远程方法,你的代码也不做。 -
@EJP 这是我的错误。将标题更改为“从远程方法返回结果集”。
标签: java jdbc rmi resultset serializable