java.io.NotSerializedException : For RowSet

标签 java jdbc rowset

我正在尝试将行集的内容打印到文件中,但出现 java.io.NotSerializedException:

这是我的程序..

package k564;

import java.io.*;
import javax.sql.RowSet;
import com.sun.rowset.JdbcRowSetImpl;

public class Lab15a {
public static void main(String[] args) {

    try{
    Class.forName("com.mysql.jdbc.Driver");
    RowSet rs= new JdbcRowSetImpl();
    rs.setUrl("jdbc:mysql://localhost:3306/jdbc");
    rs.setUsername("root");
    rs.setPassword("123");
    rs.setCommand("select cid,cname,cemail,cphone,camount from customer");
    rs.execute();

    while(rs.next()){
                System.out.println(rs.getInt("cid")+"\t"+rs.getString("cname")+"\t"+rs.getString("cemail")+"\t"+rs.getInt("cphone")+rs.getInt("camount"));          
    }

    rs.beforeFirst();
    System.out.println("Serialixzing Rowset");
    FileOutputStream fos = new FileOutputStream("d:\\rowset.txt");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(rs);
    System.out.println("serialized");
    }catch(Exception e){
        e.printStackTrace();
    }       
}

}

我收到的错误。

错误:

java.io.NotSerializableException: java.lang.Object
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at k564.Lab15a.main(Lab15a.java:33)

我不明白这里出了什么问题?

最佳答案

Java 的 ObjectOuputStream 只能序列化实现 java.io.Serialized 接口(interface)的对象。 JdbcRowSet 类未实现此接口(interface)。

要打印内容,请尝试使用 getRow()toString() 或类似的方法来实现您的目标。

关于java.io.NotSerializedException : For RowSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267586/

相关文章:

java - 通过 Java 存储过程输出参数

record - Peoplesoft CreateRowset 相关显示记录

java - 结果集与行集 : Which one to choose and when?

java - 访问位于 WEB-INF 文件夹中的资源

java - 实现 searchview - gridview 过滤器

java - MS SQL Server 2008 的 JDBC 连接异常

java - 如何将 pl/sql 的输出关联数组传递给 java?

RowSet 的 Java 8 到 Java 19 迁移

java - 无法与 .class 文件交互

java - 可转让/URL导出: Transfering bookmark data between Java App and Mozilla