0

いくつかの調査の後、送信する前にオブジェクトをバイトに変更する必要があるようです。私のコードはかなり大規模なので、デモ用に分けて説明します。プログラムが正常に完了しても何も起こらないという問題があります。

SAVE および SET 変数は、private 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 に答える