0

经过一些研究,我似乎应该在发送之前将我的对象修改为字节。由于我的代码相当广泛,我将在演示中给出它。我的问题是成功完成程序后什么也没有发生。

SAVE 和 SET 变量在私有 void 中以下列方式命名

int count = jTable1.getRowCount();

    for(int i=0;i<count;i++){
//SET0       
        SET0 = new Object[1][count];
        SET0[0][i] = txt.getText();
        ByteArrayOutputStream baosSET0 = new ByteArrayOutputStream();
        ObjectOutputStream oosSET0 = new ObjectOutputStream(baosSET0);
        oosSET0.writeObject(SET0.toString());
        byte[] SET0asBytes = baosSET0.toByteArray();
        ByteArrayInputStream baisSET0 = new ByteArrayInputStream(SET0asBytes);

      SAVE = new Object[1][count];  
      SAVE[0][i] = jTable1.getModel().getValueAt(i,0);
      ByteArrayOutputStream baosSAVE = new ByteArrayOutputStream();
        ObjectOutputStream oosSAVE = new ObjectOutputStream(baosSAVE);
        oosSAVE.writeObject(SAVE.toString());
        byte[] SAVEasBytes = baosSAVE.toByteArray();
        ByteArrayInputStream baisSAVE = new ByteArrayInputStream(SAVEasBytes);

这导致我的 SQL 查询:

 String sqla1 = "INSERT INTO MIT(MTY_KOD,MTY_TYY,MTY_ALU,MTY_PAR1,MTY_PAR2,MTY_TOL,MTY_KAN,MTY_DATE) values(?,?,?,?,?,?,?,?);";

 try{
       pst = conn.prepareStatement(sqla1);

   pst.setBinaryStream(1, baisSET0 , SET0asBytes.length);
   pst.setBinaryStream(2, baisSET2, SET2asBytes.length);
   pst.setBinaryStream(3, baisSET1, SET1asBytes.length);
   pst.setBinaryStream(4, baisSAVE, SAVEasBytes.length);
   pst.setBinaryStream(5, baisSAVE3, SAVE3asBytes.length);
   pst.setBinaryStream(6, baisSAVE5, SAVE5asBytes.length);
   pst.setBinaryStream(7, baisSET3, SET3asBytes.length);
   pst.setBinaryStream(8, baisSET2, SET2asBytes.length);

   pst.executeUpdate();}
 catch (Exception e) {
   System.out.println(e);
        }

事件从以下位置触发:

if(txt.getText().isEmpty()){
    }else{ 
        try{
    INSERT();}
        catch(IOException ex){
        System.out.println(ex);
        }
    }

我得到的错误是:

com.microsoft.sqlserver.jdbc.SQLServerException: The stream value is not the specified length. The specified length was 35, the actual length is 0.

谁能指导我如何解决此错误...或另一种保存信息的方法?谢谢你。

4

1 回答 1

0

我怀疑你需要关闭你的ObjectOutputStream.

文档

FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close();   // <-- my emphasis!
于 2012-07-05T10:16:42.683 回答