2008-11-28 5 views
1

저는 jython 2.2.1과 jdbc 1.2를 사용하고 있고 mssql 2000 데이터베이스에 연결하여 이메일 내용을 쓰고 있습니다. 이메일 본문에 꽤 큰 크기가 될 때가 있는데, 데이터를 5000 자로자를 필요가 있습니다. Exclus mssql & jdbc는 학교 야드 괴롭힘처럼 나를 강타합니다. 데이터베이스의 데이터로드가 누락 될 때마다 매번 max chars = 256 문자가 표시됩니다.JDBC와 MSSQL이 큰 필드를 잘라내는 것 같습니다

필드의 크기를 확인했으며 5000으로 설정되었습니다. 무엇을 제공합니까?

저는 이전 버전이 사용 된 것처럼 jdbc와 관련이 있다는 것을 확신합니다 .... vb6 & odbc, 장애없이. 여기

몇 가지 코드 :

내 대답을 삭제
BODY_FIELD_DATABASE=5000 

def _execute_insert(self): 
    try: 
     self._stmt=self._con.prepareStatement(\ 
      "INSERT INTO EmailHdr (EntryID, MailSubject, MailFrom, MailTo, MailReceive, MailSent, AttachNo, MailBody)\ 
      VALUES (?, ?, ?, ?, ?, ?, ?, cast(? as varchar (" + str(BODY_FIELD_DATABASE) + ")))") 
     self._stmt.setString(1,self._emailEntryId) 
     self._stmt.setString(2,self._subject) 
     self._stmt.setString(3,self._fromWho) 
     self._stmt.setString(4,self._toWho) 
     self._stmt.setString(5,self._emailRecv) 
     self._stmt.setString(6,self._emailSent) 
     self._stmt.setString(7,str(int(self._attachmentCount) + 1)) 
     self._stmt.setString(8,self._format_email_body()) 
     self._stmt.execute() 
     self._prepare_inserting_attachment_data() 
     self._insert_attachment_data() 
    except: 
     raise 

def _format_email_body(self): 
    if not self._emailBody: 
     return " " 
    if len(self._emailBody) > BODY_FIELD_DATABASE: 
     return self._clean_body(self._emailBody[:BODY_FIELD_DATABASE]) 
    else: 
     return self._clean_body(self._emailBody) 

def _clean_body(self,dirty): 
    '''used to clean =20 occurrence in email body that contains chinese characters 
     http://en.wikipedia.org/wiki/Quoted-printable''' 
    dirty=str(dirty) 
    return dirty.replace(r"=20","") 

답변

0

- 그것은 완전히 틀렸다. 그래도 여기에 그것을 유지하는 것은 & 대화가 주변에서 어슬렁 거리는 설명이다.

편집 :

당신이 코멘트에서 읽을 수 있듯이, 여기에 무슨 일이 있었는지 : 데이터가 데이터베이스 벌금에 투입되고 있었다

하지만, MSSQL 조회 관리자는 한자를 표시 할 수 있습니다.

+0

아니요 텍스트에 공백이 있고 형식이 잘 지정되어 있고 = 20 초를 뺀 것입니다. – Setori

+0

= 20이 문제와 관련된이 http://stackoverflow.com/questions/320166/emailretr-retrieves-strange-20-characters-when-the-email-body-has-chinese-chara이 문제는 – Setori

+0

도 해결됩니다. 아스키 전용 이메일 일 때 no = 20이지만, 여전히 db에 256 글자에 앉아 있습니다. – Setori