添加到一个vector里面,然后把他们读出来

解决方案 »

  1.   

    随便转换类型
    然后出现错误会提示正确类或数据的类型
    google
      

  2.   

    现在主要是不清楚sqlserver2005里,保存对象用的数据类型是什么,从DB中取的时候,应该转换成哪种java类型才不会出现类型转换错误的问题。哪位高手指点指点呀。。
      

  3.   

    哇哈哈,自己摸索出来啦.DB中用binary类型来保存持续化对象,保存和取出的时候都用binaryStream就OK啦,下面是代码:public class TestSaveObjInDB {

    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

    private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=cashfix";

    private static final String USER = "sa";

    private static final String PWD = "";

    /**
     * 获取连接
     */
    public Connection getConnection() throws SQLException, ClassNotFoundException {

    Class.forName(DRIVER);
    Connection conn = DriverManager.getConnection(URL, USER, PWD);

    return conn;
    }

    public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException {

    String sql = "insert into testobj values(?)";

    String sql2 = "select obj from testobj";

    Persion p = new Persion();

    //写入流中
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    ObjectOutputStream out = new ObjectOutputStream(bout);
    out.writeObject(p);

    //从流中读
    ByteArrayInputStream in = new ByteArrayInputStream(bout.toByteArray());

    //存入DB
    TestSaveObjInDB t = new TestSaveObjInDB();
    Connection conn = t.getConnection();
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setBinaryStream(1,in,in.available());
    pstmt.execute();
    conn.commit();

    //从DB中取
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql2);
    while(rs.next()) {

    InputStream b = rs.getBinaryStream("obj");
    System.out.println("b---->" + b);

    //写入输入流中
    ObjectInputStream oin = new ObjectInputStream(b);
    Persion p2 = (Persion)oin.readObject();

    System.out.println("姓名 : " + p2.getName());
    System.out.println("年龄 : " + p2.getAge());
    System.out.println("公司: " + p2.getCompany());
    }
    }
    }HOHO...  ~O~