2014-01-29 1 views
0
나는 데이터베이스에 내 양식에서 지문 데이터를 삽입하려고

그러나 나는 다음과 같은 예외가있어,삽입 지문 데이터 내가 잘못된 방식으로 직렬화 메커니즘을 구현 알고 2008

com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated. 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) 
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404) 
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350) 
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 

하지만 내가 직접

public void setPerson(){ 
    tfcNIC.setText(tfcnic1.getText()+tfcnic2.getText()+tfcnic3.getText()); 
    Person p = new Person(); 
    p.setName(tfname.getText()); 
    p.setFname(tfFname.getText()); 
    p.setAddr(tfaddr.getText()); 
    p.setCnic(tfcNIC.getText()); 
    p.setfPrint(((MainForm)getOwner()).getTemplate().serialize()); <--- My Stupid Serialization Step, 

, 여기

내가 무슨 짓을 코드입니다, 그렇게하는 방법을 모른다 클래스

데이터베이스에
public void setfPrint(byte[] fp){ 
    fPrint = fp;   <----- Setter method for Finger Print Of Person 
} 

데이터 삽입

public void setPersonStatement(String nm,String fn,String cn,String add, byte[] fpt) { 
    String Sql = "INSERT INTO PERSON (NAME, FNAME, CNIC, ADDR, FPT) VALUES (?,?,?,?,?)"; 
    try { 
     if(con==null){ 
      System.out.println("Connection error"); 
     } 
     else { 
      System.out.println("Connection ok"); 
     } 


     pst2=con.prepareStatement(Sql); 

    System.out.println(nm); 
    pst2.setString(1, nm); 
    pst2.setString(2, fn); 
    pst2.setString(3, cn); 
    pst2.setString(4, add); 
    pst2.setBytes(5, fpt); 

    pst2.executeUpdate(); 

    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     System.out.println("SQL Error"); 
     e.printStackTrace(); 
    } 
    } 

데이터베이스에있는 지문에 대한 데이터 유형이 나는 사람은 말해 줄 수 그렇다면 무엇을, 직렬화 개념에 새로운 오전 크기 1024, 의, VARBINARY입니다 ,

내가 디지털 페르소나 URU 4000 B를 사용하고 자바 API에 대한 하나의 터치 SDK는

아미르 Keibi 말했듯이
+2

나는 이것이 직렬화와 관련이 없다고 생각합니다. 데이터베이스에서 되돌아 오는 오류는 분명합니다. 삽입하려는 값 중 하나가 해당 열의 크기보다 큽니다. –

+0

다른 모든 필드는 GUI에서 제약 조건이 있습니다. 사용자가 지정한 크기보다 큰 데이터를 입력 할 수 없으며 유일한 동적 인 것은 바이트 []이며, 크기가 1024 인 VarBinary를 설정 했으니 충분하지 않습니까? –

+0

이것은 System.out.println (fpt)입니다. cmd로 출력 [B @ 98adae2 –

답변

0

, 즉, 직렬화의 문제가 아니었다 실제 문제는 재치이었다 h DataBase에서 FPT Column의 크기를 1024에서 2000으로, Everything Worked Fine으로 늘 렸습니다. 이제 DataBase에서 지문을 저장할 수 있습니다.